メソッドと関数の違いは何ですか?

1824
willc2 2008-10-01 13:45.

誰かがOOPコンテキストでのメソッド関数の簡単な説明を提供できますか?

30 answers

1921
Andrew Edgecombe 2008-10-01 14:00.

関数は名前で呼ばれるコードの一部です。操作するデータ(つまりパラメーター)を渡すことができ、オプションでデータ(戻り値)を返すことができます。関数に渡されるすべてのデータは明示的に渡されます。

この方法は、オブジェクトに関連付けられた名前によって呼び出されるコードの一部です。ほとんどの点で、2つの重要な違いを除いて、関数と同じです。

  1. メソッドは、呼び出されたオブジェクトに暗黙的に渡されます。
  2. メソッドは、クラス内に含まれるデータを操作できます(オブジェクトはクラスのインスタンスであり、クラスは定義であり、オブジェクトはそのデータのインスタンスであることを思い出してください)。

(これは、スコープなどの問題を無視した、簡単な説明です。)

991
Aaron 2008-10-01 13:51.

メソッドはオブジェクト上にあります。
関数はオブジェクトから独立しています。

JavaとC#の場合、メソッドのみがあります。
Cの場合、関数のみがあります。

C ++とPythonの場合、クラスに参加しているかどうかによって異なります。

244
Michael Burr 2008-10-01 13:48.

「メソッド」「関数」のオブジェクト指向の単語です。これでほぼすべてです(つまり、実際の違いはありません)。

残念ながら、ここでの答えの多くは、複雑で意味のある違いがあるという考えを永続化または前進させていると思います。

本当に-それほど多くはありません。同じことを表す言葉が違うだけです。

【後期追加】


実際、Brian Nealがこの質問へのコメントで指摘したように、C ++標準では、メンバー関数を参照するときに「メソッド」という用語を使用することはありません。一部の人々は、C ++が実際にはオブジェクト指向言語ではないことを示していると考えるかもしれません。しかし、私はそれを、かなり賢い人々のグループが、別の用語を使用する特に強い理由があるとは思わなかったことを示していると考えたいと思います。

110
Gustavo Rubio 2008-10-01 14:33.

一般に、メソッドはクラスに属する関数であり、関数はコードの他のスコープにある可能性があるため、すべてのメソッドが関数であると述べることができますが、すべての関数がメソッドであるとは限りません。

次のPythonの例を見てください。

class Door:
  def open(self):
    print 'hello stranger'

def knock_door:
  a_door = Door()
  Door.open(a_door)

knock_door()

与えられた例は、「open」と呼ばれるメソッドまたはアクションを持つ「Door」と呼ばれるクラスを示しています。これは、クラス内で宣言されているため、メソッドと呼ばれます。関数を定義する「def」がすぐ下にあるコードの別の部分があります。これはクラス内で宣言されていないため関数です。この関数は、ご覧のとおり、クラス内で定義したメソッドを呼び出し、最後に関数が実行されます。単独で呼び出されます。

ご覧のとおり、どこでも関数を呼び出すことができますが、メソッドを呼び出す場合は、メソッドが宣言されているクラスと同じタイプの新しいオブジェクト(Class.method(object))を渡すか、呼び出す必要があります。少なくともPythonでは、オブジェクト内のメソッド(object.Method())。

メソッドは1つのエンティティでしか実行できないものと考えてください。したがって、Dogクラスがある場合は、そのクラス内でのみ樹皮関数を使用するのが理にかなっています。これはメソッドです。Personクラスもある場合は、人間と犬の両方に餌を与えることができるので、どのクラスにも属さない関数「feed」を記述します。特にどのクラスにも属さないので、その関数を呼び出すことができます。

67
Duc Filan 2017-10-08 14:07.

覚える簡単な方法:

  • Fの慰め→ FのREE(無料オブジェクトまたはクラスに属していないこと)
  • M ethod→ M燃えさし(オブジェクトまたはクラスのメンバー)
44
Jorgesys 2014-10-29 13:08.

関数メソッドの主な違いの非常に一般的な定義:

関数はクラスの外部で定義され、メソッドはクラスの内部およびクラスの一部で定義されます。

31
OscarRyz 2008-10-01 14:21.

ここを読みたくなったら、「OOメソッドの紹介」です。

オブジェクト指向パラダイムの背後にある考え方は、ソフトウェアが..よく「オブジェクト」で構成されていることを「脅かす」ことです。実世界のオブジェクトにはプロパティがあります。たとえば、従業員がいる場合、従業員には名前、従業員ID、役職があり、部門に属しているなどです。

オブジェクトは、その属性を処理し、それらに対していくつかの操作を実行する方法も知っています。従業員が今何をしているのか知りたい場合は、彼に聞いてみましょう。

employe whatAreYouDoing.

その「whatAreYouDoing」は、オブジェクトに送信される「メッセージ」です。オブジェクトはその質問に答える方法を知っており、質問を解決するための「方法」があると言われています。

したがって、オブジェクトがその動作を公開する必要がある方法は、メソッドと呼ばれます。したがって、メソッドはアーティファクトオブジェクトが何かを「実行」する必要があるということです。

他の可能な方法は次のとおりです

employee whatIsYourName
employee whatIsYourDepartmentsName

一方、関数はプログラミング言語がデータを計算する方法です。たとえば、16を返す関数addValues(8、8)がある場合があります。

// pseudo-code
function addValues( int x, int y )  return x + y 
// call it 
result = addValues( 8,8 )
print result // output is 16...

最初の人気のあるプログラミング言語(fortran、c、pascalなど)はオブジェクト指向パラダイムをカバーしていなかったため、これらのアーティファクトを「関数」と呼ぶだけです。

たとえば、Cの前の関数は次のようになります。

int addValues( int x, int y ) 
{
   return x + y;
}

オブジェクトに何らかのアクションを実行するための「関数」があると言うのは「自然」ではありません。関数は数学的なものに関連しているのに対し、従業員は数学をほとんど持っていないためですが、関数とまったく同じように実行するメソッドを使用できます。たとえば、Javaでは、これは同等のaddValues関数になります。

public static int addValues( int x, int y ) {
    return x + y;
}

おなじみですか?これは、JavaのルーツがC ++であり、C ++がCであるためです。

最後は単なる概念であり、実装では同じように見えるかもしれませんが、オブジェクト指向ドキュメントではこれらはメソッドと呼ばれています。

これは、Javaの以前のEmployeeオブジェクトの例です。

public class Employee {

    Department department;
    String name;

    public String whatsYourName(){
        return this.name;
    }
    public String whatsYourDeparmentsName(){
         return this.department.name();
    }
    public String whatAreYouDoing(){
        return "nothing";
    } 
    // Ignore the following, only set here for completness
    public Employee( String name ) {
        this.name = name;
    }

}

// Usage sample.
Employee employee = new Employee( "John" ); // Creates an employee called John

// If I want to display what is this employee doing I could use its methods.
// to know it.
String name = employee.whatIsYourName():
String doingWhat = employee.whatAreYouDoint();

// Print the info to the console.

 System.out.printf("Employee %s is doing: %s", name, doingWhat );

Output:
Employee John is doing nothing.

違いは、それが適用される「ドメイン」にあります。

AppleScriptには、ある時点でOOが持っていた「自然言語」マフォアのアイデアがあります。たとえば、Smalltalk。これを読んだ後、オブジェクトのメソッドを理解するのが合理的に簡単になることを願っています。

注:コードは、単なる例としてコンパイルするものではありません。投稿を自由に変更して、Pythonの例を追加してください。

19
TheSoftwareJedi 2008-10-01 13:56.

OOの世界では、この2つは一般的に同じことを意味するために使用されます。

純粋数学とCSの観点から、関数は同じ引数(f(x、y)=(x + y))で呼び出されたときに常に同じ結果を返します。一方、メソッドは通常、クラスのインスタンスに関連付けられています。繰り返しになりますが、最近のほとんどのオブジェクト指向言語では、ほとんどの場合「関数」という用語は使用されていません。多くの静的メソッドは、通常、状態がないため(常に真であるとは限りません)、関数に非常によく似ています。

18
Mike Tunnicliffe 2008-10-01 13:55.

関数がコードのブロックであるとしましょう(通常は独自のスコープを持ち、場合によっては独自のクロージャを持ちます)。これはいくつかの引数を受け取り、結果を返すこともあります。

メソッドは、オブジェクトが所有する関数です(一部のオブジェクト指向システムでは、クラスが所有していると言った方が正確です)。オブジェクト/クラスによって「所有」されているということは、オブジェクト/クラスを介してメソッドを参照することを意味します。たとえば、Javaでは、オブジェクト「door」が所有するメソッド「open()」を呼び出す場合は、「door.open()」と記述する必要があります。

通常、メソッドは、オブジェクト/クラス内での動作を説明するいくつかの追加属性も取得します。たとえば、メソッドを呼び出すことができるオブジェクト(またはクラス)を定義する可視性(カプセル化のオブジェクト指向の概念に関連)。

多くのオブジェクト指向言語では、すべての「関数」が何らかのオブジェクト(またはクラス)に属しているため、これらの言語にはメソッドではない関数はありません。

16
Statement 2008-10-01 13:52.

メソッドはクラスの関数です。通常の専門用語では、人々は方法と機能をあちこちで交換します。基本的に、それらは同じものと考えることができます(グローバル関数がメソッドと呼ばれるかどうかはわかりません)。

http://en.wikipedia.org/wiki/Method_(computer_science)

14
Bradley Mazurek 2008-10-01 14:54.

関数は数学的な概念です。例えば:

f(x,y) = sin(x) + cos(y)

関数f()は、2番目のパラメーターのコサインに追加された最初のパラメーターのsinを返すことを示しています。それはただの数学です。たまたま、sin()とcos()も関数です。関数には別のプロパティがあります。同じパラメータを持つ関数を呼び出すと、同じ結果が返されるはずです。

一方、メソッドは、オブジェクト指向言語のオブジェクトに関連する関数です。これには、1つの暗黙的なパラメーターがあります。それは、作用を受けるオブジェクト(およびその状態)です。

したがって、メソッドg(x)を持つオブジェクトZがある場合、次のように表示される可能性があります。

Z.g(x) = sin(x) + cos(Z.y)

この場合、前の関数の例と同じように、パラメーターxが渡されます。ただし、cos()のパラメーターは、オブジェクトZの内部にある値です。Zとその内部にあるデータ(Zy)は、Zのg()メソッドの暗黙のパラメーターです。

13
Abdullah Leghari 2014-02-06 19:03.

関数またはメソッドは、いくつかの操作を実行し、オプションで値を返す、名前付きの呼び出し可能なコードです。

C言語の用語関数が使用されています。JavaC#の人々はそれをメソッドと言うでしょう(そしてこの場合の関数はクラス/オブジェクト内で定義されます)。

A C ++プログラマは、用語「方法」であるため、また、C / C ++プログラマのみの可能性が高い機能を呼び出します、彼らは手続き型スタイルのC ++コードまたはC ++のオブジェクト指向の方法をやっているを作成している場合に応じて、(関数や、時にはメソッドを呼び出すことができますC / C ++の文献ではあまり使用されていません)。

次のような名前を呼び出すだけで関数を使用できます。

result = mySum(num1, num2);


最初に次のようにオブジェクトを参照してメソッドを呼び出します。

result = MyCalc.mySum(num1,num2);
13
Jaimin Patel 2016-01-12 16:13.

歴史的に、「メソッド」は値を返さないものであり、「関数」は値を返すものであるという微妙な違いがあったかもしれません。各言語には、特別な意味を持つ用語の独自のレキシコンがあります。

では、「C」、単語「機能」を意味プログラムルーチンを

ではJavaの、用語「機能」は特別な意味を持ちません。一方、「メソッド」は、クラスの実装を形成するルーチンの1つを意味します。

ではC#のよう翻訳します:

public void DoSomething() {} // method
public int DoSomethingAndReturnMeANumber(){} // function

しかし、実際には、2つの概念に実際には違いはないことを繰り返します。Javaに関する非公式の議論で「関数」という用語を使用すると、人々はあなたが「メソッド」を意味していると見なして続行します。Javaに関する適切なドキュメントやプレゼンテーションで使用しないでください。使用すると、ばかげているように見えます。

11
Noname 2008-12-03 23:47.

関数は、データを操作するために使用できるロジックのセットです。

一方、メソッドは、それが属するオブジェクトのデータを操作するために使用される関数です。したがって、技術的には、クラスに完全には関連していないがクラスで宣言されている関数がある場合、それはメソッドではありません。それは悪いデザインと呼ばれています。

9
Statement 2008-10-01 13:57.

クラスのメソッドは、オブジェクトと呼ばれるクラスのインスタンスに作用します。

class Example
{
   public int data = 0; // Each instance of Example holds its internal data. This is a "field", or "member variable".

   public void UpdateData() // .. and manipulates it (This is a method by the way)
   {
      data = data + 1;
   }

   public void PrintData() // This is also a method
   {
      Console.WriteLine(data);
   }
}

class Program
{
   public static void Main()
   {
       Example exampleObject1 = new Example();
       Example exampleObject2 = new Example();

       exampleObject1.UpdateData();
       exampleObject1.UpdateData();

       exampleObject2.UpdateData();

       exampleObject1.PrintData(); // Prints "2"
       exampleObject2.PrintData(); // Prints "1"
   }
}
9
Mark Brittingham 2008-10-01 13:59.

ObjectPascalやC ++などのオブジェクト指向言語では、「メソッド」はオブジェクトに関連付けられた関数です。したがって、たとえば、「Dog」オブジェクトには「bark」関数があり、これは「メソッド」と見なされます。対照的に、「StrLen」関数はスタンドアロンです(引数として提供される文字列の長さを提供します)。したがって、それは単なる「機能」です。Javascriptも技術的にはオブジェクト指向ですが、C ++、C#、Pascalなどの本格的な言語と比較して多くの制限に直面しています。それにもかかわらず、その区別は依然として保持されるべきです。

追加の事実:C#は完全にオブジェクト指向であるため、スタンドアロンの「関数」を作成することはできません。C#では、すべての関数がオブジェクトにバインドされているため、技術的には「メソッド」です。キッカーは、C#でそれらを「メソッド」と呼ぶ人はほとんどいないということです。実際に区別する必要がないため、「関数」という用語を使用するだけです。

最後に、Pascalの達人がここで私に飛びつくことがないように、Pascalは「関数」(値を返す)と「プロシージャ」を区別します。もちろん、値を返すかどうかを選択することはできますが、C#はこの区別を明示的に行いません。

9
Sam Stokes 2008-10-01 15:20.

Pythonについて言及したので、以下は、ほとんどの最新のオブジェクト指向言語におけるメソッドとオブジェクトの関係を説明するのに役立つかもしれません。一言で言えば、彼らが「メソッド」と呼ぶものは、(他の回答が指摘しているように)追加の引数が渡される関数ですが、Pythonはそれをほとんどの言語よりも明示的にします。

# perfectly normal function
def hello(greetee):
  print "Hello", greetee

# generalise a bit (still a function though)
def greet(greeting, greetee):
  print greeting, greetee

# hide the greeting behind a layer of abstraction (still a function!)
def greet_with_greeter(greeter, greetee):
  print greeter.greeting, greetee

# very simple class we can pass to greet_with_greeter
class Greeter(object):
  def __init__(self, greeting):
    self.greeting = greeting

  # while we're at it, here's a method that uses self.greeting...
  def greet(self, greetee):
    print self.greeting, greetee

# save an object of class Greeter for later
hello_greeter = Greeter("Hello")

# now all of the following print the same message
hello("World")
greet("Hello", "World")
greet_with_greeter(hello_greeter, "World")
hello_greeter.greet("World")

次に、関数greet_with_greeterとメソッドを比較しますgreet。唯一の違いは、最初のパラメーターの名前です(関数では「greeter」と呼び、メソッドでは「self」と呼びました)。したがってgreetgreet_with_greeter関数を使用するのとまったく同じ方法でメソッドを使用できます(クラス内で定義したため、「ドット」構文を使用してメソッドを取得します)。

Greeter.greet(hello_greeter, "World")

だから私は効果的にメソッドを関数に変えました。関数をメソッドに変えることはできますか?さて、Pythonでは定義後にクラスをいじることができるので、試してみましょう。

Greeter.greet2 = greet_with_greeter
hello_greeter.greet2("World")

はい、関数greet_with_greeterはメソッドとしても知られていgreet2ます。これは、メソッドと関数の唯一の本当の違いを示しています。を呼び出すことによってオブジェクトの「オン」でメソッドを呼び出すobject.method(args)と、言語は魔法のようにそれをに変換しmethod(object, args)ます。

(OOの純粋主義者は、メソッドは関数とは異なるものであると主張するかもしれません。高度なPythonやRuby、またはSmalltalkに入ると、そのポイントがわかり始めます。また、一部の言語では、メソッドにオブジェクトのビットへの特別なアクセスが許可されます。主な概念上の違いは、依然として隠された余分なパラメーターです。)

8
Dirk Schumacher 2012-04-13 23:50.

私にとって:メソッドと関数の機能は、私が同意すれば同じです:

  • 関数は値を返す場合があります
  • パラメータを期待するかもしれません

他のコードと同じように、オブジェクトを配置し、その結果としてオブジェクトを取得する場合があります。その間、オブジェクトの状態が変わる可能性がありますが、基本的な機能は変わりません。

オブジェクトまたは他のコードの関数の呼び出しで定義が異なる場合があります。しかし、それは言葉の違いのためのものではなく、それが人々がそれらを交換する理由ですか?私が注意する計算の例に言及します。私は計算をするために雇用者を雇うので:

new Employer().calculateSum( 8, 8 );

そうすることで、私は雇用主が計算に責任を持つことに頼ることができます。彼がもっとお金を欲しがっているなら、私は彼を解放し、未使用の従業員を処分するという炭水化物コレクターの機能に残りを任せて、新しい従業員を雇います。

メソッドがオブジェクト関数であり、関数が接続されていない計算であると主張しても、私は役に立ちません。関数記述子自体、理想的には関数のドキュメントから、必要なものと返されるものがわかります。残りの部分は、オブジェクトの状態を操作するようなもので、私にはあまり透過的ではありません。私は、関数とメソッドの両方が、それらがどのようにそれを行うかを詳細に知る必要なしに、彼らが主張するものを提供および操作することを期待しています。純粋な計算関数でさえ、コンソールの状態を変更したり、ログファイルに追加したりする場合があります。

5
marcj 2008-10-01 13:53.

私の理解では、メソッドはクラスで実行できる任意の操作です。これは、プログラミングで使用される一般的な用語です。

多くの言語では、メソッドは関数とサブルーチンで表されます。ほとんどの言語がこれらに使用する主な違いは、関数が呼び出し元に値を返す場合と、サブルーチンが返さない場合があることです。ただし、多くの現代言語には関数しかありませんが、オプションで値を返すことはできません。

たとえば、猫について説明したいとし、あくびをしたいとします。Yawnメソッドを使用してCatクラスを作成します。これは、戻り値のない関数である可能性があります。

5
Captain Segfault 2008-10-01 14:00.

一次近似では、メソッド(C ++スタイルのオブジェクト指向)は、クラスの一部である関数であるメンバー関数の別の単語です。

C / C ++のような言語では、クラスのメンバーではない関数を持つことができます。クラスに関連付けられていない関数をメソッドとは呼ばないでください。

5
SamyCode 2017-12-15 04:03.

非常に単純な答えであるべきものを複雑にしすぎないようにしましょう。メソッドと関数は同じものです。関数は、クラスの外部にある場合は関数を呼び出し、クラスの内部に記述されている場合はメソッドを呼び出します。

4
Morfidon 2015-04-01 12:34.

IMHOの人々は、オブジェクト内の関数を参照したいときに、プログラマー間のコミュニケーションを容易にするための新しい単語を発明したかっただけです。

メソッドとは、クラス内の関数を意味します。関数とは、単にクラス外の関数を意味します。

真実は、両方の単語が機能を説明するために使用されているということです。間違って使用しても何も起こりません。どちらの単語も、コードで達成したいことをよく表しています。

関数は、何かをする役割(関数)を果たさなければならないコードです。この方法は、ある方法この問題を解決します。

それは同じことをします。同じことです。非常に正確で慣例に従いたい場合は、オブジェクト内の関数としてメソッドを呼び出すことができます。

4
Akshay Khale 2015-11-11 04:23.

関数は、主にプロシージャ指向プログラミングに属する概念であり、関数はデータを処理して値を返すことができるエンティティです。

メソッドはオブジェクト指向プログラミングの概念であり、メソッドはクラスのメンバーであり、ほとんどの場合、クラスメンバーで処理を行います。

3
Marvin 2013-07-30 18:02.

私は専門家ではありませんが、これは私が知っていることです:

  1. 関数はC言語の用語であり、コードの一部を指し、関数名はこの関数を使用するための識別子になります。

  2. メソッドはOO用語であり、通常、関数パラメーターにthisポインターがあります。Cのようにこのコードを呼び出すことはできません。呼び出すには、オブジェクトを使用する必要があります。

  3. invokeメソッドも異なります。ここで意味を呼び出して、このコードのアドレスを見つけます。C / C ++の場合、リンク時間は関数記号を使用して検索します。

  4. Objecive-Cは異なります。データ構造を使用してアドレスを見つけるためのC関数を意味する呼び出し。これは、実行時にすべてがわかっていることを意味します。

2
f-society 2017-04-24 13:11.

他の多くの人がすでに回答していることは知っていますが、以下は単純でありながら効果的な1行の回答であることがわかりました。ここで他の回答よりも見栄えはよくありませんが、注意深く読むと、メソッドと関数について知っておく必要のあるすべてが揃っています。

メソッドは、定義されたレシーバーを持つ関数です。OOP用語では、メソッドはオブジェクトのインスタンス上の関数です。

2
Siraj Alam 2017-12-16 08:42.

メソッドと関数の違い

Microsoftでこのドキュメントを読んでから

実行可能コードを含むメンバーは、まとめてクラスの関数メンバーと呼ばれます。前のセクションでは、関数メンバーの主要な種類であるメソッドについて説明しました。このセクションでは、C#でサポートされている他の種類の関数メンバー(コンストラクター、プロパティ、インデクサー、イベント、演算子、ファイナライザー)について説明します。

したがって、メソッドは関数のサブセットです。すべてのメソッドは関数ですが、すべての関数がメソッドでconstructorあるとは限りません。たとえば、aはメソッドとは言えませんが、関数です。

2
Aditya 2019-01-17 22:35.

関数-いくつかのロジックを含み、独立 して呼び出す必要があり、クラスの外部で定義される、独立したコード内の関数

メソッド-メソッドは、あるオブジェクトを参照して呼び出され、クラス内で定義される独立したコードです。

1
Lahar Shah 2017-09-29 04:12.

JavaScriptの例を使用したメソッドと関数の説明を次に示します。

test(20, 50); 関数定義であり、いくつかのステップを実行したり、どこかに保存/使用できるものを返すために使用します。

コードを再利用できます。コードを1回定義して、何度も使用します。

同じコードを異なる引数で何度も使用して、異なる結果を生成できます。

var x = myFunction(4, 3);   // Function is called, return value will end up in x

function myFunction(a, b) {
    return a * b;          // Function returns the product of a and b
}

var test = something.test(); ここでtest()は、いくつかのオブジェクトのメソッド、または組み込みオブジェクトのカスタム定義されたプロトタイプにすることができます。詳細は次のとおりです。

JavaScriptメソッドは、オブジェクトに対して実行できるアクションです。

JavaScriptメソッドは、関数定義を含むプロパティです。

javascriptの文字列の組み込みプロパティ/メソッド:

var message = "Hello world!";
var x = message.toUpperCase();
//Output: HELLO WORLD!

カスタム例:

function person(firstName, lastName, age, eyeColor) {
    this.firstName = firstName;  
    this.lastName = lastName;
    this.age = age;
    this.eyeColor = eyeColor;
    this.changeName = function (name) {
        this.lastName = name;
    };
}

something.changeName("SomeName"); //This will change 'something' objject's name to 'SomeName'

たとえば、文字列、配列などのプロパティも定義できます。

String.prototype.distance = function (char) {
    var index = this.indexOf(char);

    if (index === -1) {
        console.log(char + " does not appear in " + this);
    } else {
        console.log(char + " is " + (this.length - index) + " characters from the end of the string!");
    }
};

var something = "ThisIsSomeString"

// now use distance like this, run and check console log

something.distance("m");

いくつかの参照:Javascriptオブジェクトメソッド、関数、プロトタイプの詳細

1
yogendra saxena 2019-12-20 21:11.

TL; DR

関数は実行するコードの一部です。
メソッドは、オブジェクト内の関数です。

関数の例:


function sum(){
  console.log("sum")l
}

メソッドの例:

const obj = {
a:1,
b:2,
sum(){
  }
}

したがって、関数内の「this」キーワードは、call、apply、bindで使用しない限り、あまり役に立たないと言うのです。call、apply、bindは、オブジェクト内のメソッドとしてその関数を呼び出すため、基本的には関数をメソッドに変換します

1
Sapphire_Brick 2019-09-23 01:53.

それらはしばしば交換可能ですが、メソッドは通常クラス内のサブルーチンを参照し、関数は通常クラス外のサブルーチンを参照します。たとえば、Rubyでは:

# function
def putSqr(a)
   puts a ** 2
end


class Math2
   # method
   def putSqr(a)
      puts a ** 2
   end
end

すべて(packageステートメントとimportステートメントを除く)がクラス内になければならないJavaでは、ほとんどの場合、人々はそれらを「メソッド」と呼びます。

Related questions

MORE COOL STUFF

ケイト・ブランシェットは3日間一緒に夫と一緒に寝て、25年経ってもまだ夫と結婚しています

ケイト・ブランシェットは3日間一緒に夫と一緒に寝て、25年経ってもまだ夫と結婚しています

ケイト・ブランシェットは、夫に会ったとき、典型的な交際のアドバイスに逆らいました。

マイケルシーンが非営利の俳優である理由

マイケルシーンが非営利の俳優である理由

マイケルシーンは非営利の俳優ですが、それは正確にはどういう意味ですか?

ホールマークスターのコリンエッグレスフィールドがRomaDramaLiveでスリル満点のファンと出会う![エクスクルーシブ]

ホールマークスターのコリンエッグレスフィールドがRomaDramaLiveでスリル満点のファンと出会う![エクスクルーシブ]

特徴的なスターのコリン・エッグレスフィールドは、RomaDrama Liveでのスリル満点のファンとの出会いについて料理しました!加えて、大会での彼のINSPIREプログラム。

「たどりつけば」をオンラインでストリーミングできない理由

「たどりつけば」をオンラインでストリーミングできない理由

ノーザンエクスポージャーが90年代の最も人気のある番組の1つになった理由を確認するには、Blu-rayまたはDVDプレーヤーをほこりで払う必要があります。

バイオニック読書はあなたをより速く読むことができますか?

バイオニック読書はあなたをより速く読むことができますか?

BionicReadingアプリの人気が爆発的に高まっています。しかし、それは本当にあなたを速読術にすることができますか?

ドミニカのボイリング湖:アクセスは簡単ではありませんが、ハイキングする価値があります

ドミニカのボイリング湖:アクセスは簡単ではありませんが、ハイキングする価値があります

ドミニカのボイリング湖は、世界で2番目に大きいボイリング湖です。そこにたどり着くまでのトレッキングは大変で長いですが、努力する価値は十分にあります。

私たちの水をきれいに保つのを助けるためにあなたの髪を寄付してください

私たちの水をきれいに保つのを助けるためにあなたの髪を寄付してください

サロンからのヘアトリミングや個人的な寄付は、油流出を吸収して環境を保護するのに役立つマットとして再利用できます。

ホワイトハウスの最も記憶に残る結婚式を見てください

ホワイトハウスの最も記憶に残る結婚式を見てください

過去200年以上の間にホワイトハウスで結婚したのはほんの数人です。彼らは誰でしたか、そしてそこで結婚式を獲得するために何が必要ですか?

ねえNFL、ジョーバロウとカイラーマレーは女性の権利をサポートするために少しの助けを使うことができます

ねえNFL、ジョーバロウとカイラーマレーは女性の権利をサポートするために少しの助けを使うことができます

ジョー・バロウロー対ウェイド事件の転覆に対応するNFLは、言葉を言わないことで、腹立たしいが予測可能なPRの結果でした。

別の日、別のヒンジのないLIV記者会見

別の日、別のヒンジのないLIV記者会見

(lから)パット・ペレス、ブルックス・ケプカ、パトリック・リードサウジアラビアのLIVゴルフリーグのさらに別の信じられないほどの記者会見で、スポーツのファンはブルックス・ケプカからでたらめな吐き気と質問回避の驚異的なマスタークラスを受けました。パトリックリード、ブライソンデシャンボー、パットペレス、最近のPGAツアーの脱北者。

ミズ・マーベルの家族の帰郷は悪役よりも激しく打撃を与える

ミズ・マーベルの家族の帰郷は悪役よりも激しく打撃を与える

レッドダガーとマーベルさんがチームを組んでいます。

6億7500万ドルのビットコインローンのデフォルト後にすべての資産を清算するように命じられたスリーアローズキャピタル

6億7500万ドルのビットコインローンのデフォルト後にすべての資産を清算するように命じられたスリーアローズキャピタル

暗号業界最大の沈没船の1つであるスリーアローズキャピタルは、ついにその悲惨さから解放されています。火曜日に、不良債権ヘッジファンドは、債権者からの返済を要求する訴訟の高まりに応えて、バージンアイランド裁判所によって清算を命じられました彼らが3ACに行ったローン。

Zendaya Wishes Boyfriend Tom Holland Happy Birthday with Cuddly Photo: He 'Makes Me the Happiest'

Zendaya Wishes Boyfriend Tom Holland Happy Birthday with Cuddly Photo: He 'Makes Me the Happiest'

Zendaya shared a sweet photo in honor of boyfriend Tom Holland's 26th birthday Wednesday

小さな女性:脳卒中を患った後に病院から解放されたアトランタのジューシーな赤ちゃん:「まだ癒し」

小さな女性:脳卒中を患った後に病院から解放されたアトランタのジューシーな赤ちゃん:「まだ癒し」

シーレン「Ms.JuicyBaby」ピアソンは、先月脳卒中で入院した後、「もう一度たくさんのことをする方法を学ばなければならない」ため、言語療法を受けていることを明らかにしました。

エマストーンは彼女のクリフサイドマリブビーチハウスを420万ドルでリストアップしています—中を見てください!

エマストーンは彼女のクリフサイドマリブビーチハウスを420万ドルでリストアップしています—中を見てください!

オスカー受賞者の世紀半ばの家には、3つのベッドルーム、2つのバス、オーシャンフロントの景色があります。

ジーニー・メイ・ジェンキンスは、母乳育児の経験の中で、彼女は「本当に、本当に落ち込んでいる」と言います

ジーニー・メイ・ジェンキンスは、母乳育児の経験の中で、彼女は「本当に、本当に落ち込んでいる」と言います

ジーニー・メイ・ジェンキンスは、生後4か月の娘、モナコに母乳育児をしていると語った。

Suffragettes Indicam #3: Junho

Suffragettes Indicam #3: Junho

Mais um mês se findando — e metade do ano de 2022 já passou. Sabe o que isso significa? Não, não é hora de verificar se você está cumprindo com suas resoluções de Ano Novo.

多元宇宙—Junø

多元宇宙—Junø

チェーン間アカウントがJunoに登場します。異なるブロックチェーン間でスマートコントラクトの構成可能性と真の相互運用性を提供します。

#brand【ベター・コール・ソール!アメリカのテレビシリーズ「ブレイキング・バッド」に最高のビジネス例が隠されている】・・・ルールクリエイティブ

#brand【ベター・コール・ソール!アメリカのテレビシリーズ「ブレイキング・バッド」に最高のビジネス例が隠されている】・・・ルールクリエイティブ

1.ドラマを見た後、起業する考えはありますか?あなたのビジネスはボトルネックに遭遇しましたか?方向性がなくてわからない場合は、ドラマを追いかけて行くことを心からお勧めします。(?)ブラフではなく、最も完璧なビジネス例を隠すドラマがあります。2.ブレイキング・バッドとその弁護士ドラマ「ブレイキング・バッド」を見た友人たちは、演劇の中で、穏やかな表情で、弁護士のソウル・グッドマンに深く感銘を受けなければなりません。口を開けて、感覚の弱い傭兵の性格を持っています。道徳の面で、サル・グッドマンは無意識のうちに劇に欠かせない役割を果たし、彼自身のシリーズ「絶望的な弁護士」(ベター・コール・ソール)を生み出しました。ウェントウのテキストとビデオは、劇中のソウル・グッドマンのテレビコマーシャルです。製品(サービス)、競争戦略、市場ポジショニング、ブランド名、ターゲット顧客グループ、コミュニケーション軸から広告まで、サル・グッドマンの役割のビジネス設定は、「最低」と見なすことができる超超超超超超完全です。ブランドコミュニケーションのコスト」「変化」のモデル。なぜ?私の分析をご覧ください。3.ソウル・グッドマンの「事業戦略」1.基本情報ブランド名:Saul Goodman製品:法律相談サービス対象顧客:麻薬中毒、飲酒運転、事故など。法律知識の欠如は、一般的に公立弁護士にしか余裕がなく、真面目な弁護士も「特別な法律を持つ消費者」を避けます。恐れてはいけない「​​ニーズ」。コミュニケーションの主軸:この国のすべての男性、女性、子供は有罪判決を受けるまで無実だと思います。地域:アルバカーキ市スローガン:Thrallに電話したほうがいいです!(ベター・コール・ソール)広告:2つの可能性のある犯罪状況をシミュレートします+サウルの主張+サウルのスローガン2をより適切に呼び出します。

メインネットガイド— Arbitrum Odyssey Week 2

メインネットガイド— Arbitrum Odyssey Week 2

最新のアップデートを受け取るために私たちに従ってください。ニュースレター:https://www。

Language