Ruby/Metody: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Nie podano opisu zmian
Szymon wro (dyskusja | edycje)
Linia 25:
</pre>
 
To co rozumiemy przez długość może się różnić w zależności od rodzaju obiektu do którego mówimy. Za pierszympierwszym razem w powyższym przykładzie pytamy <tt>foo</tt> o jego długość i <tt>foo</tt> wskazuje na prosty łańcuch znakowy, więc jest tylko jedna sensowną odpowiedź. Za drugim razem <tt>foo</tt> odnosi się do tablicy i możemy rozsądnie myśleć o jej długości jako o 2, 5 lub 10, oczywiście najbardziej pasującą odpowiedzą jest 2 (inne rodzaje długości możemy wyliczyć na życzenie).
 
<pre
Linia 45:
</pre>
 
Tak więc niezbędne jest wiedzieć, które metody są akceptowane przez obiekt, chociaż nie potrzebujemy wiedzieć jak te metody są przetwarzane.
So it is necessary to know what methods are acceptable to an object, though we need not know how the methods are processed.
 
Jeżeli przekazujemy do metody jakieś argumenty, zazwyczaj są one otoczone przez nawiasy okrągłe,
If arguments are given to a method, they are generally surrounded by parentheses,
 
<pre>
object.method(arg1, arg2)
</pre>
 
ale mogą one zostać ominięte jeżeli, nie stanie się to przyczyną dwuznaczności.
but they can be omitted if doing so does not cause ambiguity.
 
<pre>
object.method arg1, arg2
</pre>
 
Jest pewna specjalna zmienna w Rubim - <tt>self</tt>. Odnosi się ona tylko do obiektu na rzecz którego wywołujemy metodę. Dzieje się to tak często, że dla wygody "<tt>self.</tt>" może być opuszczone w metodach odwołujących się z danego obiektu do samego siebie:
There is a special variable self in ruby; it refers to whatever object calls a method. This happens so often that for convenience the "self." may be omitted from method calls from an object to itself:
 
<pre>
self.method_name(args...)
</pre>
 
oznacza to samo co
is the same as
 
<pre>
method_name(args...)
</pre>
 
To co tradycyjnie nazwalibyśmy wywołaniem funkcji jest po prostu skróconą formą zapisywania wywołań metod przez <tt>self</tt>. To właśnie czyni z Rubiego czysto obiektowy język programowania. Ponadto metody funkcjonalne nadal zachowują się całkiem podobnie do funkcji w innych językach programowania. Jest to pewną korzyścią dla tych, którzy nie rozumieją, że w Rubim wywołania funkcji są tak naprawdę w wywołaniami metod obiektów. Jeśli chcemy, możemy traktować funkcje tak jakby nie były one naprawdę metodami obiektów.
What we would think of traditionally as a function call is just this abbreviated way of writing method invocations by self. This makes ruby what is called a pure object oriented language. Still, functional methods behave quite similarly to the functions in other programming languages for the benefit of those who do not grok how function calls are really object methods in ruby. We can speak of functions as if they were not really object methods if we want to.
<noinclude>
{{ProstaNawigacja|spis=Ruby|poprzart=Ruby/Myślenie zorientowane obiektowo|poprz=Myślenie zorientowane obiektowo|nastart=Ruby/Klasy|nast=Klasy}}