diff --git a/bg/about/index.md b/bg/about/index.md index d76213778f..951e9d3d84 100644 --- a/bg/about/index.md +++ b/bg/about/index.md @@ -54,7 +54,6 @@ Ruby е абсолютно [безплатен](./license.txt) за употре (метод, извикан върху число). 5.times { print "We *love* Ruby -- it's outrageous!" } -{: .code .ruby-code} В много други езици числата и примитивните типове не са обекти. Ruby е повлиян от Smalltalk и дава възможност за извикването на методи на @@ -78,7 +77,6 @@ Ruby е считан за гъвкав език поради факта, че п y = 5.plus 6 # y е равно на 11 -{: .code .ruby-code} Операторите в Ruby всъщност представляват синтактична „захар“ за методите. Те също могат да бъдат променени. @@ -98,7 +96,6 @@ Ruby е считан за гъвкав език поради факта, че п   %w[Google Yahoo MSN].map do |engine|     "http://www." + engine.downcase + ".com"   end -{: .code .ruby-code} В горния отрязък код блокът е реализиран в `do ... end` конструкцията. Методът `map` се прилага за списъка от думи в блока. Много други методи @@ -120,7 +117,6 @@ Ruby е считан за гъвкав език поради факта, че п class MyArray   include Enumerable end -{: .code .ruby-code} Като цяло рубистите смятат, че това е по-изчистен начин за реализиране на идеята за множествено наследяване, което по-принцип е сложно и ограничаващо в много от случаите. ### Визуално представяне на Ruby код diff --git a/bg/documentation/quickstart/2/index.md b/bg/documentation/quickstart/2/index.md index eb4efc6048..a99f12be70 100644 --- a/bg/documentation/quickstart/2/index.md +++ b/bg/documentation/quickstart/2/index.md @@ -11,7 +11,6 @@ lang: bg irb(main):011:1> puts "Hello World!" irb(main):012:1> end => nil -{: .code .ruby-code} Кодът започва с израза `def`, което обозначава началото на метода. Това указва на Ruby, че искаме да дефинираме метод с име `h`. Следващият ред @@ -28,7 +27,6 @@ lang: bg irb(main):014:0> h() Hello World! => nil -{: .code .ruby-code} Извикването на метод е толкова лесно, колкото самото изписване на името му. Ако методът не приема параметри, може да пропуснем скобите. @@ -43,7 +41,6 @@ lang: bg irb(main):018:0> h("Matz") Hello Matz! => nil -{: .code .ruby-code} Чудесно, работи. Но нека видим как точно. @@ -62,7 +59,6 @@ lang: bg irb(main):023:0> h Hello World! => nil -{: .code .ruby-code} Нещата, които тук се забелязват са употребата на методът с и без параметър. Ако извикаме методът с параметър, който сме въвели, @@ -86,7 +82,6 @@ lang: bg irb(main):033:2> end irb(main):034:1> end => nil -{: .code .ruby-code} Новата ключова дума в примера е `class`. Тя дефинира нов клас, наречен Greeter, както и няколко метода . Също така трябва да се обърне внимание diff --git a/bg/documentation/quickstart/3/index.md b/bg/documentation/quickstart/3/index.md index 3e182cac04..62c99a1782 100644 --- a/bg/documentation/quickstart/3/index.md +++ b/bg/documentation/quickstart/3/index.md @@ -14,7 +14,6 @@ lang: bg irb(main):037:0> g.say_bye Bye Pat, come back soon. => nil -{: .code .ruby-code} След като веднъж сме създали обектът `g`, той запаметява името Pat. Какво би се случило, ако искаме да променим името директно ? @@ -23,7 +22,6 @@ lang: bg SyntaxError: compile error (irb):52: syntax error         from (irb):52 -{: .code .ruby-code} Изходът от горния пример е грешка. @@ -46,7 +44,6 @@ lang: bg     "clone", "public_methods", "respond_to?", "freeze",     "say_bye", "__id__", "=~", "methods", "nil?", "dup",     "instance_variables", "instance_of?"] -{: .code .ruby-code} Интересно е да видим, че обектът “притежава” доста методи, въпреки, че ние сме дефинирали само 3. Ще разбулим мистерията, като кажем, че това @@ -56,7 +53,6 @@ lang: bg irb(main):040:0> Greeter.instance_methods(false) => ["say_bye", "say_hi"] -{: .code .ruby-code} Съществува метод, който ни дава прествава какви методи може да извикаме върху обекта: @@ -67,7 +63,6 @@ lang: bg => true irb(main):043:0> g.respond_to?("to_s") => true -{: .code .ruby-code} ## Никога не е късно за промяна на класа @@ -79,7 +74,6 @@ lang: bg irb(main):045:1> attr_accessor :name irb(main):046:1> end => nil -{: .code .ruby-code} В Ruby лесно може да отворим класа отново за модификация. Промените ще се отразят на наличните и новите обекти. Нека създадем нов обект. @@ -102,7 +96,6 @@ lang: bg irb(main):054:0> g.say_hi Hi Betty! => nil -{: .code .ruby-code} Използването на `attr_accessor` дефинира два нови метода, `name` за прочитане на стойността и `name=` за промяна на стойността. @@ -179,7 +172,6 @@ Control-D.   mg.say_hi   mg.say_bye end -{: .code .ruby-code} Съхранете този файл като “ri20min.rb” и го стартирайте, като напишете “ruby ri20min.rb”. Изходът на програмата би изглеждал така: diff --git a/bg/documentation/quickstart/4/index.md b/bg/documentation/quickstart/4/index.md index c31055d09f..a67c921af9 100644 --- a/bg/documentation/quickstart/4/index.md +++ b/bg/documentation/quickstart/4/index.md @@ -25,7 +25,6 @@ UNIX-подобни операционни системи.     puts "Hello #{@names}!"   end end -{: .code .ruby-code} В горния пример правим проверка на параметъра `@names` за да вземем решение. Ако е nil, отпечатваме три точки. @@ -42,7 +41,6 @@ UNIX-подобни операционни системи. @names.each do |name|   puts "Hello #{name}!" end -{: .code .ruby-code} Методът `each` приема блок с код, който се изпълнява за всеки елемент от списъка, бит по бит, между ключовите думи `do` и `end. Блокът е като @@ -53,7 +51,6 @@ UNIX-подобни операционни системи. на списъка, като това става на C по следния начин: for (i=0; i -{: .code .ruby-code} Този вариант работи, но не е най-елегантното решение. Имаме нужда от променлива i, големината на списъка и описание на начина на обхождане. В @@ -77,7 +74,6 @@ Ruby това става много елегантно, като всички д     puts "Goodbye #{@names}. Come back soon!"   end end -{: .code .ruby-code} Методът `say_bye` не използва `each`, а вместо това прави проверка дали `@names` отговаря на метода `join` и при положителен резултат го ползва. @@ -94,7 +90,6 @@ Ruby това става много елегантно, като всички д Ползваме един последен трик за стартиране на скрипта: if __FILE__ == $0 -{: .code .ruby-code} `__FILE__` е специална променлива, която съдържа името на настоящия файл, а `$0` представлява името на файла, нужен за стартирането на diff --git a/bg/documentation/quickstart/index.md b/bg/documentation/quickstart/index.md index 137d761054..64f7ea2125 100644 --- a/bg/documentation/quickstart/index.md +++ b/bg/documentation/quickstart/index.md @@ -26,13 +26,11 @@ Ruby пристига с програмка, наречена IRB ( Interactive ^ irb(main):001:0> -{: .code .ruby-code} Напишете : `"Hello World"` irb(main):001:0> "Hello World" => "Hello World" -{: .code .ruby-code} ## Ruby току що ви се подчини ! @@ -44,7 +42,6 @@ Ruby пристига с програмка, наречена IRB ( Interactive irb(main):002:0> puts "Hello World" Hello World => nil -{: .code .ruby-code} `puts` е метод, който позволява да отпечатате израз/текст/низ в Ruby. А какво тогава означава `=> nil`? Това е резултата от изпълнения израз. @@ -56,24 +53,20 @@ Ruby пристига с програмка, наречена IRB ( Interactive irb(main):003:0> 3+2 => 5 -{: .code .ruby-code} Дотук добре, нека пробваме умножение и вдигане на квадрат: irb(main):004:0> 3*2 => 6 -{: .code .ruby-code} irb(main):005:0> 3**2 => 9 -{: .code .ruby-code} В Ruby метода `**` е начин да повдигаме на степен. Следва пример с намиране на корен: irb(main):006:0> Math.sqrt(9) => 3.0 -{: .code .ruby-code} Резултатът е верен, но какво значи Math.sqrt ? И по-точно, какво значи `Math`? @@ -102,7 +95,6 @@ Ruby пристига с програмка, наречена IRB ( Interactive irb(main):008:0> b = 4 ** 2 => 16 irb(main):009:0> Math.sqrt(a+b) => 5.0 -{: .code .ruby-code} Леснотата на писане на калкулатора ни отклони от кода в началото – изписването на “Hello World”. За това, нека [прехвърлим отново фокуса си diff --git a/bg/documentation/ruby-from-other-languages/index.md b/bg/documentation/ruby-from-other-languages/index.md index c7fa6c4786..399c1a120b 100644 --- a/bg/documentation/ruby-from-other-languages/index.md +++ b/bg/documentation/ruby-from-other-languages/index.md @@ -7,14 +7,12 @@ lang: bg Когато за първи път се сблъскате с код писан на Ruby е вероятно да ви напомни на езици за програмиране, които вече ползвате. Това е направено с цел. Много от синтаксиса е заимстван от Perl, Python и Java (както от други езици), за това научаването на Ruby би било много по-лесно. Този страница е разделена на две секции. Първата е обобщение на нещата, които ще видите от езика \_X\_ в Ruby. Втората секция е посветена на някои от основните принципи на езика. h2. Какво да очакваме \* [Oт C/C++ към Ruby](/bg/documentation/ruby-from-other-languages/to-ruby-from-c-and-c-/) \* [Oт Java към Ruby](/bg/documentation/ruby-from-other-languages/to-ruby-from-java/) \* [Oт Perl към Ruby](/bg/documentation/ruby-from-other-languages/to-ruby-from-perl/) \* [Oт PHP към Ruby](/bg/documentation/ruby-from-other-languages/to-ruby-from-php/) \* [Oт Python към Ruby](/bg/documentation/ruby-from-other-languages/to-ruby-from-python/) h2. Важни неща в езика Това са някои насоки за нещата, с които ще се запознаете при изучаването на Ruby. h3. Итерация Две от нещата, с които може би не сте се сблъсквали са \"блоковете\" и итераторите. Вместо да използваме цикъл с индекс ( както в C, C++ или в ранните версии на 1.5 Java), итерацията на списък (в Perl for (@a) \{...} или в Python for i in aList: ...) може да се осъществи с : some_list.each do |this_item|   # операции за всеки елемент this_item. end -{: .code .ruby-code} За повече информация относно @each@ (и неговите приятели @collect@, @find@, @inject@, @sort@ и т.н.) можете да прочетете с командата @ri Enumerable@ (и ri Enumerable#*име\_на\_метод*). h3. Всичко има стойност Няма разлика между expression и statement. Всичко има стойност, дори и тя да бъде \*nil\*: x = 10 y = 11 z = if x true -{: .code .ruby-code} @@ -23,7 +21,6 @@ lang: bg irb(main):002:0> "george".object_id == "george".object_id => false irb(main):003:0> -{: .code .ruby-code} @@ -34,7 +31,6 @@ lang: bg MyClass = Class.new do   attr_accessor :instance_var end -{: .code .ruby-code} @@ -42,7 +38,6 @@ lang: bg def Constant   11 end -{: .code .ruby-code} @@ -51,7 +46,6 @@ lang: bg end some_keyword_params( :param_one => 10, :param_two => 42 ) # => {:param_one=>10, :param_two=>42} -{: .code .ruby-code} @@ -60,7 +54,6 @@ lang: bg   print "0 is true" else:   print "0 is false" -{: .code .ruby-code} @@ -70,7 +63,6 @@ lang: bg else   puts "0 is false" end -{: .code .ruby-code} @@ -79,7 +71,6 @@ lang: bg   def a_method; true; end   def another_method; false; end end -{: .code .ruby-code} @@ -92,7 +83,6 @@ lang: bg   # another_method is private   def another_method; false; end end -{: .code .ruby-code} @@ -133,7 +123,6 @@ lang: bg         from (irb):25         from :0 irb(main):026:0> -{: .code .ruby-code} @@ -147,7 +136,6 @@ lang: bg # 14 hours from 00:00 January 1st # (aka when you finally wake up ;) Time.mktime(2006, 01, 01) + 14.hours # => Sun Jan 01 14:00:00 -{: .code .ruby-code} @@ -168,7 +156,6 @@ lang: bg # Other objects are not affected other_car = Car.new other_car.inspect # => Cheap car -{: .code .ruby-code} @@ -182,7 +169,6 @@ lang: bg __ :a, :b, 10 # => Method __ was called, but not found. It has these # arguments: a, b, 10 -{: .code .ruby-code} @@ -192,7 +178,6 @@ lang: bg 1.+(2) # Which is the same as this: 1.send "+", 2 -{: .code .ruby-code} @@ -203,13 +188,11 @@ lang: bg adder = block { |a, b| a + b } # adder is now a Proc object adder.class # => Proc -{: .code .ruby-code} Можем да създаваме блокове извън извиквания към методи чрез Proc.new или чрез метода `lambda`. Впрочем, методите са обекти: method(:puts).call "puts is an object!" # => puts is an object! -{: .code .ruby-code} @@ -219,7 +202,6 @@ lang: bg     self - other   end end -{: .code .ruby-code} diff --git a/de/about/index.md b/de/about/index.md index f094a72d87..a4656c6e8f 100644 --- a/de/about/index.md +++ b/de/about/index.md @@ -70,7 +70,6 @@ Aktionen *Methoden*. Rubys rein objektorientierter Ansatz wird Zahl aufgerufen wird: 5.times { print "Wir *lieben* Ruby -- es ist ungeheuerlich!" } -{: .code .ruby-code} In vielen Sprachen sind Zahlen und andere primitive Typen keine Objekte. Ruby folgt dem Einfluss von Smalltalk und gibt all ihren Typen Methoden @@ -96,7 +95,6 @@ zu Rubys eingebauter Klasse `Numeric` hinzufügen. y = 5.plus 6 # y ist jetzt 11 -{: .code .ruby-code} Rubys Operatoren sind syntaktischer Zucker für Methoden; man kann sie ebenfalls umdefinieren. @@ -118,7 +116,6 @@ bewahren[4](#fn4).”   %w[Google Yahoo MSN].map do |engine|     "http://www." + engine.downcase + ".com"   end -{: .code .ruby-code} Im obigen Quelltext steht der Block zwischen `do` und `end`. Die Methode `map` wendet den Block auf die gegebene Liste von Namen an. Viele andere @@ -139,7 +136,6 @@ neue Methoden, die auf `each` aufbauen (wie `map`). class MyArray   include Enumerable end -{: .code .ruby-code} Im Allgemeinen halten Rubyisten Mixins für klarer als Mehrfachvererbung, die komplex und einschränkend sein kann. diff --git a/de/documentation/quickstart/2/index.md b/de/documentation/quickstart/2/index.md index c0bd6e6952..615e46c046 100644 --- a/de/documentation/quickstart/2/index.md +++ b/de/documentation/quickstart/2/index.md @@ -11,7 +11,6 @@ Finger wund zu tippen? Wir definieren eine Methode! irb(main):011:1> puts "Hallo, Welt!" irb(main):012:1> end => nil -{: .code .ruby-code} Mit dem Code `def h` beginnt man die Methodendefinition. Er teilt Ruby mit, dass wir eine Methode definieren, deren Name `h` ist. Die nächste @@ -31,7 +30,6 @@ Rufen wir nun die Methode ein paar Mal auf: irb(main):014:0> h() Hallo, Welt! => nil -{: .code .ruby-code} So einfach ist das also! Man ruft eine Methode auf, indem man Ruby einfach ihren Namen nennt. Wenn die Methode keine Parameter hat, ist das @@ -50,7 +48,6 @@ Name als Parameter akzeptiert wird: irb(main):018:0> h("Matz") Hallo, Matz! => nil -{: .code .ruby-code} Es funktioniert also … aber sehen wir uns genauer an, was hier vor sich geht. @@ -74,7 +71,6 @@ einem Großbuchstaben anfängt: irb(main):023:0> h Hallo Welt! => nil -{: .code .ruby-code} Hier kann man noch weitere Tricks beobachten. Einer davon ist, dass wir die Methode wieder ohne Klammern aufrufen. Wenn es also offensichtlich @@ -102,7 +98,6 @@ Dafür erzeugen wir am besten ein Objekt. Lass uns also eine Klasse irb(main):033:2> end irb(main):034:1> end => nil -{: .code .ruby-code} Das neue Schlüsselwort hier ist `class`. Damit definieren wir eine neue Klasse namens “Greeter” und eine gewisse Anzahl von Methoden für diese diff --git a/de/documentation/quickstart/3/index.md b/de/documentation/quickstart/3/index.md index 5210aa915f..bc2eb0e801 100644 --- a/de/documentation/quickstart/3/index.md +++ b/de/documentation/quickstart/3/index.md @@ -14,7 +14,6 @@ Erzeugen wir nun ein Greeter-Objekt und benutzen es: irb(main):037:0> g.sag_tschuess Tschuess, Patrick, bis bald! => nil -{: .code .ruby-code} Wenn `g` einmal erzeugt wurde, merkt es sich, dass der Name Patrick ist. Hmm, und wenn wir direkt auf den Namen im Objekt zugreifen wollen? @@ -23,7 +22,6 @@ Hmm, und wenn wir direkt auf den Namen im Objekt zugreifen wollen? SyntaxError: compile error (irb):52: syntax error         from (irb):52 -{: .code .ruby-code} Nö, das geht offensichtlich nicht. @@ -47,7 +45,6 @@ Welche Methoden existieren nun für Greeter-Objekte?     "clone", "public_methods", "respond_to?", "freeze",     "sag_tschuess", "__id__", "=~", "methods", "nil?", "dup",     "instance_variables", "instance_of?"] -{: .code .ruby-code} Hoppla, das sind aber ganz schön viele! Wir haben doch nur zwei Methoden definiert. Was ist hier also los? Es handelt sich hier um **alle** @@ -59,7 +56,6 @@ sollen, indem wir `false` als Parameter angeben. irb(main):040:0> Greeter.instance_methods(false) => ["sag_hallo", "sag_tschuess"] -{: .code .ruby-code} Aha, das sieht schon besser aus! Nun schauen wir mal, auf welche Methoden unser Greeter-Objekt reagiert: @@ -70,7 +66,6 @@ Methoden unser Greeter-Objekt reagiert: => true irb(main):043:0> g.respond_to?("to_s") => true -{: .code .ruby-code} Es kennt also `sag_hallo` und `to_s`. (Die zuletzt genannte Methode ist jedem Objekt per Voreinstellung bekannt – sie wandelt etwas in einen @@ -86,7 +81,6 @@ die Variablen eines Objekts zu gewähren. irb(main):045:1> attr_accessor :name irb(main):046:1> end => nil -{: .code .ruby-code} In Ruby kann man eine Klasse jederzeit verändern. Das ändert keine Objekte, die bereits existieren, aber es beeinflusst sämtliche neuen @@ -111,7 +105,6 @@ spielen ein bisschen mit dessen `@name`-Eigenschaft herum. irb(main):054:0> g.sag_hallo Hallo, Bettina! => nil -{: .code .ruby-code} Die Benutzung von `attr_accessor` hat zwei neue Methoden für uns definiert: Mit `name` erhält man den Wert, mit `name=` setzt man ihn. @@ -190,7 +183,6 @@ Strg-D.   mg.sag_hallo   mg.sag_tschuess end -{: .code .ruby-code} Speichere diese Textdatei als “ri20min.rb” und starte es mit “ruby ri20min.rb”. Die Ausgabe sollte sein: diff --git a/de/documentation/quickstart/4/index.md b/de/documentation/quickstart/4/index.md index bf13ff19ad..a71e4fadd8 100644 --- a/de/documentation/quickstart/4/index.md +++ b/de/documentation/quickstart/4/index.md @@ -27,7 +27,6 @@ Unsere `sag_hallo`-Methode ist ein bisschen trickreicher geworden:     puts "Hallo, #{@names}!"   end end -{: .code .ruby-code} Sie berücksichtigt nun den `@names`-Parameter und trifft abhängig davon Entscheidungen. Ist er nil, schreibt sie nur drei Punkte auf den @@ -46,7 +45,6 @@ Sehen wir uns den Iterator genauer an: @names.each do |name|   puts "Hallo, #{name}!" end -{: .code .ruby-code} `each` ist eine Methode, die einen Code-Block akzeptiert und diesen für jedes einzelne Element der Liste ausführt. Das Stück zwischen `do` und @@ -62,7 +60,6 @@ Die meisten anderen Programmiersprachen behandeln einen Listendurchlauf mit einer `for`-Schleife, was in C in etwa so aussieht: for (i=0; i -{: .code .ruby-code} Das funktioniert auch, ist aber nicht besonders elegant. Man benötigt eine “Wegwerf-Variable” wie `i`, man muss die Größe der Liste kennen, @@ -92,7 +89,6 @@ Benutzers.     puts "Tschuess, #{@names}, bis bald!"   end end -{: .code .ruby-code} Die `sag_tschuess`-Methode benutzt kein `each`. Stattdessen prüft sie, ob `@names` der `join`-Methode antwortet, und benutzt sie in diesem @@ -113,7 +109,6 @@ nur Methoden dieser Klasse auf. Es gibt einen letzten Trick, den man beachten sollte, und das ist diese Zeile: if __FILE__ == $0 -{: .code .ruby-code} `__FILE__` ist die magische Variable, die den Namen der gerade benutzen Datei als Wert hat, während `$0` der Name der Datei ist, mit dem das diff --git a/de/documentation/quickstart/index.md b/de/documentation/quickstart/index.md index e94ca688b8..e9f9fb4d0a 100644 --- a/de/documentation/quickstart/index.md +++ b/de/documentation/quickstart/index.md @@ -24,7 +24,6 @@ Zuerst starten wir die interaktive Ruby-Konsole: IRB. ^ irb(main):001:0> -{: .code .ruby-code} So, IRB ist nun gestartet. Wie geht es weiter? @@ -32,7 +31,6 @@ Gib folgendes ein: `"Hallo, Welt!"` irb(main):001:0> "Hallo, Welt!" => "Hallo, Welt!" -{: .code .ruby-code} ## Ruby hört auf Dich! @@ -45,7 +43,6 @@ wollen, müssen wir ein bisschen mehr tun: irb(main):002:0> puts "Hallo, Welt!" Hallo, Welt! => nil -{: .code .ruby-code} `puts` ist das grundlegende Kommando, um etwas in Ruby auf den Bildschirm auszugeben. Und was bedeutet `=> nil`? Das ist das Ergebnis @@ -59,7 +56,6 @@ Taschenrechner zu benutzen: irb(main):003:0> 3+2 => 5 -{: .code .ruby-code} Drei plus Zwei. Das war nicht schwer. Was ist mit Drei *mal* Zwei? Man könnte das nun einfach eintippen, kurz genug ist es jedenfalls. Du @@ -72,20 +68,17 @@ Multiplikations-Operator) umändern. irb(main):004:0> 3*2 => 6 -{: .code .ruby-code} Probieren wir als nächstes Drei zum Quadrat aus: irb(main):005:0> 3**2 => 9 -{: .code .ruby-code} In Ruby sagt man `**`, wenn man “hoch” sagen will. Aber was, wenn man den umgekehrten Weg gehen und die Quadratwurzel von etwas finden will? irb(main):006:0> Math.sqrt(9) => 3.0 -{: .code .ruby-code} Moment, wie war das? So wird die Quadratwurzel von Neun berechnet? Damit liegst Du vollkommen richtig. Aber sehen wir uns das genauer an! @@ -118,7 +111,6 @@ Dann weisen wir das Ergebnis einfach einer Variablen zu. => 16 irb(main):009:0> Math.sqrt(a+b) => 5.0 -{: .code .ruby-code} So nützlich das auch für einen Taschenrechner ist: Wir entfernen uns von der traditionellen `"Hallo, Welt!"`-Botschaft, auf die Anleitungen für diff --git a/de/documentation/ruby-from-other-languages/index.md b/de/documentation/ruby-from-other-languages/index.md index ad740c9ae0..3893935198 100644 --- a/de/documentation/ruby-from-other-languages/index.md +++ b/de/documentation/ruby-from-other-languages/index.md @@ -46,7 +46,6 @@ aList:`), sondern in den meisten Fällen so:   # Wir sind im Innern des Blocks   # und arbeiten mit item. end -{: .code .ruby-code} Mehr zu `each` (und seine Artgenossen `collect`/`map`, `find`, `inject`, `sort` etc.) erfährst du über `ri Enumerable` (bzw. ri @@ -61,7 +60,6 @@ Damit ist so etwas möglich: x = 10 y = 11 z = if x true -{: .code .ruby-code} ### Symbole sind keine Strings @@ -77,7 +75,6 @@ und du siehst den Unterschied: irb(main):002:0> "george".object_id == "george".object_id => false irb(main):003:0> -{: .code .ruby-code} Die Methode `object_id` liefert die ID eines Objektes. Haben zwei Objekte dieselbe `object_id`, dann sind sie identisch (zeigen auf @@ -109,7 +106,6 @@ du kannst mit ihnen dasselbe tun wie mit jedem anderen Objekt: MyClass = Class.new do   attr_accessor :instance_var end -{: .code .ruby-code} ### Variable Konstanten @@ -133,7 +129,6 @@ Das kann zu Verwirrung führen, wie das folgende Beispiel zeigt: def Constant   11 end -{: .code .ruby-code} Nun hat `Constant` den Wert 10, aber die Funktion `Constant()` gibt 11 aus. @@ -144,8 +139,7 @@ Zahlen von 1 bis 5: five1 = [1, 2, 3, 4, 5] # Klasse Array - five2 = Array.new -{: .code .ruby-code} + five2 = Array.new ### Ersatz für benannte Parameter @@ -157,7 +151,6 @@ imitieren, indem man Symbole und Hashes kombiniert. Beispiel: end some_keyword_params( :param_one => 10, :param_two => 42 ) # => {:param_one=>10, :param_two=>42} -{: .code .ruby-code} Diese Methode wird unter anderem in Ruby on Rails häufig eingesetzt. @@ -173,7 +166,6 @@ Python-Code an (das Beispiel funktioniert auch in anderen Sprachen):   print "0 ist true" else:   print "0 ist false" -{: .code .ruby-code} Hier wird “0 ist false” ausgeben. Dasselbe in Ruby: @@ -183,7 +175,6 @@ Hier wird “0 ist false” ausgeben. Dasselbe in Ruby: else   puts "0 ist false" end -{: .code .ruby-code} Ruby gibt “0 ist true” aus. @@ -196,7 +187,6 @@ Im folgenden Ruby-Code:   def a_method; true; end   def another_method; false; end end -{: .code .ruby-code} könnte man erwarten, dass `another_method` *public* ist. Falsch. `private` gilt bis zum Ende des Blocks, oder bis ein anderer Modifikator @@ -211,13 +201,11 @@ aufgerufen wird. Standardmäßig sind Methoden *public*\:   # another_method ist "private".   def another_method; false; end end -{: .code .ruby-code} `public`, `private` und `protected` sind in Wirklichkeit Methoden und akzeptieren Parameter. Wenn du ein Symbol an eine davon übergibst, wird die Sichtbarkeit der Methode mit diesem Namen geändert: class MyClass   # Jetzt ist a_method wieder "private".   private :a_method end -{: .code .ruby-code} ### Sichtbarkeit von Methoden @@ -275,7 +263,6 @@ Ein Beispiel aus den [Ruby FAQ][1]\:         from (irb):25         from :0 irb(main):026:0> -{: .code .ruby-code} ### Offene Klassen @@ -293,7 +280,6 @@ viele Methoden zur Erzeugung von Zeitangaben hinzu: # 14 Stunden nach 00:00 am 1. Januar # (oder "als du endlich aufwachst" ;) Time.mktime(2006, 01, 01) + 14.hours #-> Sun Jan 01 14:00:00 -{: .code .ruby-code} ### Lustige Namen für Methoden @@ -331,7 +317,6 @@ Objekt, für das du sie definierst: # Andere Objekte werden nicht beeinflusst: car = Car.new car.inspect #-> billig -{: .code .ruby-code} ### Fehlende Methoden @@ -353,7 +338,6 @@ Bibliotheken auch tun.) Hier ist ein Beispiel: __ :a, :b, 10 #-> Die Methode __ wurde nicht gefunden. #-> Folgende Argumente wurden übergeben: a, b, 10. -{: .code .ruby-code} Der obige Code gibt nur die Details des Aufrufs aus, aber du kannst die Botschaft natürlich auch völlig anders behandeln. @@ -368,7 +352,6 @@ Objekt: 1.+(2) # ist dasselbe wie 1.send "+", 2 -{: .code .ruby-code} ### Blöcke sind Objekte, sie wissen es nur noch nicht @@ -384,7 +367,6 @@ hinzufügst: adder = block { |a, b| a + b } # adder ist jetzt ein Proc adder.class #-> Proc -{: .code .ruby-code} Du kannst Blockobjekte auch außerhalb von Methodenaufrufen erzeugen, indem du `Proc.new` oder die Methode `lambda` mit dem Block aufrufst. @@ -393,7 +375,6 @@ In ähnlicher Weise können auch aus Methoden Objekte gemacht werden: method(:puts).call "puts ist ein Objekt!" #-> puts ist ein Objekt! -{: .code .ruby-code} ### Operatoren sind syntaktischer Zucker @@ -407,7 +388,6 @@ die Methode `+` für `Fixnum` überschreiben:     self - other   end end -{: .code .ruby-code} Du brauchst kein `operator+` oder ähnliches. diff --git a/de/news/_posts/2011-02-18-exception-methoden-knnen-safe-umgehen.md b/de/news/_posts/2011-02-18-exception-methoden-knnen-safe-umgehen.md index 93627c0f55..b9f38c1105 100644 --- a/de/news/_posts/2011-02-18-exception-methoden-knnen-safe-umgehen.md +++ b/de/news/_posts/2011-02-18-exception-methoden-knnen-safe-umgehen.md @@ -31,7 +31,6 @@ beliebige *untainted* Strings wie folgt verändern: open($secret_path) do   ... end -{: .code .ruby-code} ### Betroffene Versionen diff --git a/en/about/index.md b/en/about/index.md index 51ac0831cc..294ebb9ee5 100644 --- a/en/about/index.md +++ b/en/about/index.md @@ -66,7 +66,6 @@ as *methods*. Ruby’s pure object-oriented approach is most commonly demonstrated by a bit of code which applies an action to a number. 5.times { print "We *love* Ruby -- it's outrageous!" } -{: .code .ruby-code} In many languages, numbers and other primitive types are not objects. Ruby follows the influence of the Smalltalk language by giving methods @@ -92,7 +91,6 @@ to Ruby’s builtin `Numeric` class. y = 5.plus 6 # y is now equal to 11 -{: .code .ruby-code} Ruby’s operators are syntactic sugar for methods. You can redefine them as well. @@ -112,7 +110,6 @@ closures, I wanted to respect the Lisp culture[4](#fn4).”   %w[Google Yahoo MSN].map do |engine|     "http://www." + engine.downcase + ".com"   end -{: .code .ruby-code} In the above code, the block is described inside the `do ... end` construct. The `map` method applies the block to the provided list of @@ -133,7 +130,6 @@ looping. class MyArray   include Enumerable end -{: .code .ruby-code} Generally, Rubyists see this as a much clearer way than multiple inheritance, which is complex and can be too restrictive. diff --git a/en/documentation/quickstart/index.md b/en/documentation/quickstart/index.md index 06cd6ed08a..8ee87e9974 100644 --- a/en/documentation/quickstart/index.md +++ b/en/documentation/quickstart/index.md @@ -28,7 +28,6 @@ Open up IRB (which stands for Interactive Ruby). ^ irb(main):001:0> -{: .code .ruby-code} Ok, so it’s open. Now what? @@ -36,7 +35,6 @@ Type this: `"Hello World"` irb(main):001:0> "Hello World" => "Hello World" -{: .code .ruby-code} ## Ruby Obeyed You! @@ -48,7 +46,6 @@ the result of the last expression it evaluated. If we want to print out irb(main):002:0> puts "Hello World" Hello World => nil -{: .code .ruby-code} `puts` is the basic command to print something out in Ruby. But then what’s the `=> nil` bit? That’s the result of the expression. `puts` @@ -60,7 +57,6 @@ Already, we have enough to use IRB as a basic calculator: irb(main):003:0> 3+2 => 5 -{: .code .ruby-code} Three plus two. Easy enough. What about three *times* two? You could type it in, it’s short enough, but you may also be able to go up and @@ -71,20 +67,17 @@ use backspace to change it to a `*` sign. irb(main):004:0> 3*2 => 6 -{: .code .ruby-code} Next, let’s try three squared: irb(main):005:0> 3**2 => 9 -{: .code .ruby-code} In Ruby `**` is the way you say “to the power of”. But what if you want to go the other way and find the square root of something? irb(main):006:0> Math.sqrt(9) => 3.0 -{: .code .ruby-code} Ok, wait, what was that last one? If you guessed, “it was figuring out the square root of nine,” you’re right. But let’s take a closer look at @@ -114,7 +107,6 @@ result to a variable. irb(main):008:0> b = 4 ** 2 => 16 irb(main):009:0> Math.sqrt(a+b) => 5.0 -{: .code .ruby-code} As great as this is for a calculator, we’re getting away from the traditional `Hello World` message that beginning tutorials are supposed diff --git a/en/documentation/ruby-from-other-languages/index.md b/en/documentation/ruby-from-other-languages/index.md index 075de0ec4a..21bdc191ac 100644 --- a/en/documentation/ruby-from-other-languages/index.md +++ b/en/documentation/ruby-from-other-languages/index.md @@ -46,7 +46,6 @@ in aList: ...), with Ruby you’ll very often instead see   # We're inside the block.   # deal with this_item. end -{: .code .ruby-code} For more info on `each` (and it’s friends `collect`, `find`, `inject`, `sort`, etc.), see `ri Enumerable` (and then ri @@ -60,7 +59,6 @@ has a value, even if that value is **nil**. This is possible: x = 10 y = 11 z = if x true -{: .code .ruby-code} ### Symbols are not lightweight Strings @@ -75,7 +73,6 @@ Symbols can best be described as identities. A symbol is all about irb(main):002:0> "george".object_id == "george".object_id => false irb(main):003:0> -{: .code .ruby-code} The `object_id` methods returns the identity of an Object. If two objects have the same `object_id`, they are the same (point to the same @@ -106,7 +103,6 @@ any other object: MyClass = Class.new do   attr_accessor :instance_var end -{: .code .ruby-code} ### Variable Constants @@ -128,7 +124,6 @@ can lead to confusion, as the example below shows: def Constant   11 end -{: .code .ruby-code} Now `Constant` is 10, but `Constant()` is 11. @@ -143,7 +138,6 @@ this heavily. Example: end some_keyword_params( :param_one => 10, :param_two => 42 ) # => {:param_one=>10, :param_two=>42} -{: .code .ruby-code} ### The universal truth @@ -157,7 +151,6 @@ code (the example applies to other languages, too):   print "0 is true" else:   print "0 is false" -{: .code .ruby-code} This will print “0 is false”. The equivalent Ruby: @@ -167,7 +160,6 @@ This will print “0 is false”. The equivalent Ruby: else   puts "0 is false" end -{: .code .ruby-code} Prints “0 is true”. @@ -180,7 +172,6 @@ In the following Ruby code,   def a_method; true; end   def another_method; false; end end -{: .code .ruby-code} You might expect `another_method` to be public. Not so. The ‘private’ access modifier continues until the end of the scope, or until another @@ -196,7 +187,6 @@ public:   # another_method is private   def another_method; false; end end -{: .code .ruby-code} `public`, `private` and `protected` are really methods, so they can take parameters. If you pass a Symbol to one of them, that method’s visibility is altered. ### Method access @@ -250,7 +240,6 @@ private method call.         from (irb):25         from :0 irb(main):026:0> -{: .code .ruby-code} ### Classes are open @@ -264,7 +253,6 @@ private method call. # 14 hours from 00:00 January 1st # (aka when you finally wake up ;) Time.mktime(2006, 01, 01) + 14.hours # => Sun Jan 01 14:00:00 -{: .code .ruby-code} ### Funny method names @@ -295,7 +283,6 @@ Object you defined it on. # Other objects are not affected other_car = Car.new other_car.inspect # => Cheap car -{: .code .ruby-code} ### Missing methods @@ -315,7 +302,6 @@ better fit your application, and many libraries do. Here is an example: __ :a, :b, 10 # => Method __ was called, but not found. It has these # arguments: a, b, 10 -{: .code .ruby-code} The code above just prints the details of the call, but you are free to handle the message in any way that is appropriate. @@ -330,7 +316,6 @@ A method call is really a **message** to another object: 1.+(2) # Which is the same as this: 1.send "+", 2 -{: .code .ruby-code} ### Blocks are Objects, they just don’t know it yet @@ -345,7 +330,6 @@ appending a special argument to the argument list, like so: adder = block { |a, b| a + b } # adder is now a Proc object adder.class # => Proc -{: .code .ruby-code} You can create blocks outside of method calls, too, by calling Proc.new with a block or calling the `lambda` method. @@ -354,7 +338,6 @@ Similarly, methods are also Objects in the making: method(:puts).call "puts is an object!" # => puts is an object! -{: .code .ruby-code} ### Operators are syntactic sugar @@ -368,7 +351,6 @@ method:     self - other   end end -{: .code .ruby-code} You don’t need C++’s `operator+`, etc. diff --git a/es/about/index.md b/es/about/index.md index 22307a8911..13b264e721 100644 --- a/es/about/index.md +++ b/es/about/index.md @@ -70,7 +70,6 @@ como *métodos*. La orientación a objetos pura de Ruby se suele demostrar con un simple código que aplica una acción a un número. 5.times { print "Nos *encanta* Ruby -- ¡es fuera de serie!" } -{: .code .ruby-code} En muchos lenguajes, los números y otros tipos primitivos no son objetos. Ruby sigue la influencia del lenguaje Smalltalk pudiendo poner @@ -97,7 +96,6 @@ prefieres usar la palabra *sumar*, puedes agregar un método llamado y = 5.sumar 6 # ahora y vale 11 -{: .code .ruby-code} Los operadores de Ruby son simples conveniencias sintácticas para los métodos. Los puedes redefinir como y cuando quieras. @@ -119,7 +117,6 @@ Lisp[4](#fn4)”.   %w[Google Yahoo MSN].map do |motor|     "http://www." + motor.downcase + ".com"   end -{: .code .ruby-code} En este código, el bloque está descrito entre la construcción `do ... end`. El método `map` aplica el bloque a la lista de palabras provista. @@ -142,7 +139,6 @@ conjunto de métodos que usan `each` para recorrer sus elementos. class MiArray   include Enumerable end -{: .code .ruby-code} En general, los Rubyistas ven esto como una forma mucho más clara de herencia múltiple, que es compleja e incluso puede ser restrictiva. diff --git a/es/documentation/quickstart/2/index.md b/es/documentation/quickstart/2/index.md index 5c05a04dbc..5eb1375770 100644 --- a/es/documentation/quickstart/2/index.md +++ b/es/documentation/quickstart/2/index.md @@ -11,7 +11,6 @@ con el teclado? ¡Necesitamos definir un método! irb(main):011:1> puts "Hola Mundo" irb(main):012:1> end => nil -{: .code .ruby-code} La expresión `def h` inicia la definición del método. Le dice a Ruby que estamos definiendo un método, cuyo nombre es `h`. La siguiente linea es @@ -30,7 +29,6 @@ Ahora intentemos ejecutar ese método algunas veces: irb(main):014:0> h() Hola Mundo => nil -{: .code .ruby-code} Bien, eso fue fácil. Ejecutar un método en Ruby es tan fácil como sólo mencionar su nombre. Si el método no requiere parámetros para @@ -47,7 +45,6 @@ Simplemente redefine `h` para que tome un nombre como parámetro. irb(main):018:0> h("Matz") Hola Matz => nil -{: .code .ruby-code} Así que eso funciona… pero tomémonos un segundo para ver más en detalle qué es lo que está sucediendo. @@ -70,7 +67,6 @@ esto para asegurarte que el nombre comience con mayúscula: irb(main):023:0> h Hola Mundo => nil -{: .code .ruby-code} Algunos otros trucos para destacar. Uno es que otra vez estamos llamando al método sin utilizar los paréntesis. Si lo que quieres hacer es obvio, @@ -96,7 +92,6 @@ querer utilizar un objeto para eso. Vamos a crear la clase “Anfitrion”. irb(main):033:2> end irb(main):034:1> end => nil -{: .code .ruby-code} La nueva palabra clave aquí es `class`. Esto define una nueva clase llamada Anfitrion y un par de métodos para esa clase. También toma nota diff --git a/es/documentation/quickstart/3/index.md b/es/documentation/quickstart/3/index.md index 599334674e..b9d3ff5864 100644 --- a/es/documentation/quickstart/3/index.md +++ b/es/documentation/quickstart/3/index.md @@ -14,7 +14,6 @@ Ahora vamos a crear y usar un objeto anfitrión: irb(main):037:0> a.decir_adios Adiós Juan, vuelve pronto. => nil -{: .code .ruby-code} Una vez que el objeto `a` es creado, nos recuerda que el nombre es Juan. Mmm, ¿y si queremos acceder al nombre directamente? @@ -23,7 +22,6 @@ Mmm, ¿y si queremos acceder al nombre directamente? SyntaxError: compile error (irb):52: syntax error         from (irb):52 -{: .code .ruby-code} No, no podemos. @@ -48,7 +46,6 @@ Entonces, ¿qué métodos están disponibles para los objetos Anfitrion?     "clone", "public_methods", "respond_to?", "freeze",     "decir_adios", "__id__", "=~", "methods", "nil?", "dup",     "instance_variables", "instance_of?"] -{: .code .ruby-code} Bien. Eso es un montón de métodos. Nosotros sólo definimos dos métodos. ¿Qué es lo que está sucediendo? Bueno, estos son **todos** los métodos @@ -60,7 +57,6 @@ no queremos los métodos definidos por sus ancestros. irb(main):040:0> Anfitrion.instance_methods(false) => ["decir_adios", "decir_hola"] -{: .code .ruby-code} Ah, hay más cosas como esa. Veamos a qué métodos puede responder nuestro objeto anfitrión: @@ -71,7 +67,6 @@ objeto anfitrión: => true irb(main):043:0> a.respond_to?("to_s") => true -{: .code .ruby-code} Así que, sabe `decir_hola`, y `to_s` (que significa “convertir algo en un string”, un método que está definido por defecto para todos los @@ -86,7 +81,6 @@ una forma fácil para permitir acceder a las variables de un objeto. irb(main):045:1> attr_accessor :nombre irb(main):046:1> end => nil -{: .code .ruby-code} En Ruby, puedes volver a abrir una clase y modificarla. Eso no cambia objetos que ya existan, pero afecta a los nuevos objetos que puedas @@ -111,7 +105,6 @@ crear. Así que vamos a crear un nuevo objeto y juguemos con su propiedad irb(main):054:0> a.decir_hola Hola Matilde => nil -{: .code .ruby-code} El uso de `attr_accessor` determinó que se definan dos nuevos métodos por nosotros, `nombre` para obtener el valor, y `nombre=` para @@ -193,7 +186,6 @@ Control-D.   ma.decir_hola   ma.decir_adios end -{: .code .ruby-code} Guarda este archivo como “ri20min.rb”, y ejecútalo con “ruby ri20min.rb”. El resultado debería ser: diff --git a/es/documentation/quickstart/4/index.md b/es/documentation/quickstart/4/index.md index 0c8d78425c..ebc1b8d070 100644 --- a/es/documentation/quickstart/4/index.md +++ b/es/documentation/quickstart/4/index.md @@ -28,7 +28,6 @@ Nuestro método `decir_hola` se ha vuelto un poco más complicado:     puts "Hola #{@nombres}"   end end -{: .code .ruby-code} Ahora usa el atributo `@nombres` para tomar decisiones. Si es nil, sólo imprime tres puntos. No hay razón para saludar a nadie, ¿cierto? @@ -46,7 +45,6 @@ Veamos ese iterador en más detalle: @nombres.each do |nombre|   puts "Hola #{nombre}" end -{: .code .ruby-code} El método `each` acepta un bloque de código y lo ejecuta por cada elemento de la lista, y el código entre `do` y `end` es el bloque en sí @@ -61,7 +59,6 @@ Muchos otros lenguajes de programación manejan la iteración de una lista usando la clásica sintaxis `for`, que en C se ve así: for (i=0; i -{: .code .ruby-code} Esto funciona, pero no es muy elegante. Necesitas una variable descartable como `i`, averiguar la cantidad de elementos de la lista, y @@ -92,7 +89,6 @@ simplificados frente a las preocupaciones del desarrollador.     puts "Adiós #{@nombres}. Vuelve pronto."   end end -{: .code .ruby-code} El método `decir_adios` no usa `each`, en vez de eso se fija si `@nombres` responde al método `join`, y si es así, lo usa. Si no es así, @@ -111,7 +107,6 @@ los métodos de la clase. Hy un último truco para tener en cuenta, y es la linea: if __FILE__ == $0 -{: .code .ruby-code} `__FILE__` es la variable mágica que contiene el nombre del archivo que se está ejecutando en ese momento. `$0` es el nombre del archivo usado diff --git a/es/documentation/quickstart/index.md b/es/documentation/quickstart/index.md index e49c2760b7..ca81fc7c0d 100644 --- a/es/documentation/quickstart/index.md +++ b/es/documentation/quickstart/index.md @@ -24,7 +24,6 @@ Arranca el IRB. ^ irb(main):001:0> -{: .code .ruby-code} Bien, ahora está abierto. ¿Y ahora qué? @@ -32,7 +31,6 @@ Escribe esto: `"Hola Mundo"` irb(main):001:0> "Hola Mundo" => "Hola Mundo" -{: .code .ruby-code} ## ¡Ruby te obedeció! @@ -45,7 +43,6 @@ un poco más: irb(main):002:0> puts "Hola Mundo" Hola Mundo => nil -{: .code .ruby-code} `puts` es el comando básico para escribir algo en Ruby. Pero entonces, ¿qué es ese `=> nil`? Ese es el resultado de la expresión. `puts` @@ -58,7 +55,6 @@ Pronto, tenemos suficiente para usar IRB como una calculadora básica: irb(main):003:0> 3+2 => 5 -{: .code .ruby-code} Tres más dos. Bastante fácil. ¿Y qué tal tres *veces* dos? Podrías escribirlo, es bastante corto, pero también podrías subir y simplemente @@ -69,20 +65,17 @@ posicionarte junto al signo `+` y cambiarlo por un `*`. irb(main):004:0> 3*2 => 6 -{: .code .ruby-code} Ahora intentemos tres al cuadrado: irb(main):005:0> 3**2 => 9 -{: .code .ruby-code} En Ruby `**` es la forma que tienes para decir “elevado al”. ¿Y qué tal si quieres hacer lo inverso y encontrar la raíz cuadrada de algo? irb(main):006:0> Math.sqrt(9) => 3.0 -{: .code .ruby-code} Bien, esperen, ¿qué fue eso? Si adivinaste, “fue la forma de averiguar la raíz cuadrada de nueve”, estás en lo cierto. Pero veamos las cosas un @@ -115,7 +108,6 @@ operaciones? Asigna el resultado a una variable. => 16 irb(main):009:0> Math.sqrt(a+b) => 5.0 -{: .code .ruby-code} Por más bueno que esté esto de la calculadora, nos estamos alejando del tradicional mensaje `Hola Mundo` en el que se supone que los cursos para diff --git a/es/documentation/ruby-from-other-languages/index.md b/es/documentation/ruby-from-other-languages/index.md index 0a3a1d3b36..ec87b85410 100644 --- a/es/documentation/ruby-from-other-languages/index.md +++ b/es/documentation/ruby-from-other-languages/index.md @@ -60,7 +60,6 @@ verás muy frecuentemente código de este estilo:   # Estamos dentro del bloque.   # Trabaja con este_item. end -{: .code .ruby-code} Para obtener más información sobre `each` (y sus amigos `collect`, `find`, `inject`, `sort`, etc.), ejecuta `ri Enumerable` (y después @@ -74,7 +73,6 @@ incluso si ese valor es **nil**. Esto es posible: x = 10 y = 11 z = if x true -{: .code .ruby-code} ### Los symbols (símbolos) no son strings especiales @@ -90,7 +88,6 @@ diferencia: irb(main):002:0> "jorge".object_id == "jorge".object_id => false irb(main):003:0> -{: .code .ruby-code} El método `object_id` retorna la identidad de un objeto. Si dos objetos tienen el mismo `object_id`, son el mismo objeto (apuntan al mismo @@ -122,7 +119,6 @@ cualquier otro objeto: MiClase = Class.new do   attr_accessor :variable_de_instancia end -{: .code .ruby-code} ### Constantes variables @@ -147,7 +143,6 @@ ejemplo: def Constante   11 end -{: .code .ruby-code} Ahora `Constante` vale 10, pero `Constante()` retorna 11. @@ -162,7 +157,6 @@ entre otros, usa esto a discreción. Por ejemplo: end parametros_con_nombre( :param_uno => 10, :param_dos => 42 ) # => {:param_uno=>10, :param_dos=>42} -{: .code .ruby-code} ### La verdad universal @@ -176,7 +170,6 @@ código Python (el ejemplo aplica también a otros lenguajes):   print "0 es verdadero" else:   print "0 es falso" -{: .code .ruby-code} Esto imprimirá “0 es falso”. El equivalente en Ruby: @@ -186,7 +179,6 @@ Esto imprimirá “0 es falso”. El equivalente en Ruby: else   puts "0 es falso" end -{: .code .ruby-code} Imprime “0 es verdadero”. @@ -199,7 +191,6 @@ En el siguiente código Ruby,   def un_metodo; true; end   def otro_metodo; false; end end -{: .code .ruby-code} Puede ser que esperes que `otro_metodo` sea de alcance público. Esto no es así. El modificador de acceso ‘private’ continúa hasta el fin del @@ -215,7 +206,6 @@ ocurra primero. Por defecto, los métodos son públicos:   # otro_metodo es privado   def otro_metodo; false; end end -{: .code .ruby-code} `public`, `private` y `protected` en realidad son métodos, así que pueden recibir parámetros. Si pasas un símbolo a uno de ellos, la visibilidad de ese método es alterada. ### Acceso a los métodos @@ -273,7 +263,6 @@ Ejemplo, adaptado del [Ruby FAQ][1]\:         from (irb):25         from :0 irb(main):026:0> -{: .code .ruby-code} ### Las clases están abiertas @@ -292,7 +281,6 @@ tiempo y los horarios en `Fixnum`. Mira:    # 14 horas desde las 00:00 del 1ro de enero del 2006 Time.mktime(2006, 01, 01) + 14.hours # => Sun Jan 01 14:00:00 -{: .code .ruby-code} ### Nombres de métodos graciosos @@ -330,7 +318,6 @@ el objeto en el que los defines. # Otros objetos no son afectados otro_auto = Automovil.new otro_auto.inspect # => Auto barato -{: .code .ruby-code} ### Métodos faltantes @@ -351,7 +338,6 @@ Aquí tienes un ejemplo: __ :a, :b, 10 # => El método __ fue invocado, pero no existe. Tiene estos # argumentos: a, b, 10 -{: .code .ruby-code} Este código sólo imprime los detalles de la invocación, pero eres libre de manejar el mensaje como te parezca más apropiado. @@ -366,7 +352,6 @@ Una invocación a un método en realidad es un **mensaje** a otro objeto: 1.+(2) # Que es lo mismo que esto: 1.send "+", 2 -{: .code .ruby-code} ### Los bloques son objetos, sólo que todavía no lo saben @@ -382,7 +367,6 @@ así: sumador = block { |a, b| a + b } # sumador ahora es un objeto Proc sumador.class # => Proc -{: .code .ruby-code} También puedes crear bloques fuera de las invocaciones a métodos, utilizando Proc.new con un bloque o llamando al método `lambda`. @@ -391,7 +375,6 @@ Similarmente, los métodos también pueden ser objetos: method(:puts).call "¡puts es un objeto!" # => ¡puts es un objeto! -{: .code .ruby-code} ### Los operadores son comodidades sintácticas @@ -405,7 +388,6 @@ métodos. Puedes, por ejemplo, redefinir el método Fixnum#+\:     self - otro   end end -{: .code .ruby-code} No necesitas el`operator+` de C++, etc. diff --git a/fr/about/index.md b/fr/about/index.md index 2fa75eafb6..fd429982a7 100644 --- a/fr/about/index.md +++ b/fr/about/index.md @@ -80,7 +80,6 @@ sous le terme de *variables d’instance*, et aux actions sous le nom de par un bout de code montrant l’application d’une action à un nombre. 5.times { print "Nous *adorons* Ruby -- Même trop !" } -{: .code .ruby-code} Dans beaucoup de langages, les nombres et autres types primaires ne sont pas des objets. Ruby suit ici la voie de Smalltalk, en donnant accès aux @@ -112,7 +111,6 @@ l’opérateur plus (`+`). Mais si vous préférez utiliser une méthode y = 5.plus 6 # y vaut maintenant 11 -{: .code .ruby-code} Tous les opérateurs de Ruby sont des méthodes pensées pour être aussi pratique que faire se peut, syntaxiquement parlant. Vous pouvez @@ -136,7 +134,6 @@ respecter la voie tracée par Lisp[4](#fn4). »   %w[Google Yahoo MSN].map do |moteur|     "http://www." + moteur.downcase + ".com"   end -{: .code .ruby-code} Dans le code ci-dessus, le bloc est délimité par la structure `do ... end`. La méthode `map` applique le bloc à la liste de mots fournie en @@ -160,7 +157,6 @@ méthodes utilisant `each` pour faire des boucles. class MonTableau   include Enumerable end -{: .code .ruby-code} En général, les rubyistes préfèrent cette façon de faire à l’héritage multiple, qui est complexe et peut se révéler trop restrictif. diff --git a/fr/documentation/quickstart/2/index.md b/fr/documentation/quickstart/2/index.md index 24088e58a2..e21eb0a9fd 100644 --- a/fr/documentation/quickstart/2/index.md +++ b/fr/documentation/quickstart/2/index.md @@ -12,7 +12,6 @@ nous fatiguer. Il va falloir définir une méthode. irb(main):011:1> puts "Hello World!" irb(main):012:1> end => nil -{: .code .ruby-code} Le mot-clé `def` a ici pour rôle de commencer la définition d’une méthode. Il dit tout simplement à Ruby que nous \[*attention !*\] @@ -35,7 +34,6 @@ pour voir : irb(main):014:0> h() Hello World! => nil -{: .code .ruby-code} Rien de très compliqué. Appeler une méthode en Ruby, c’est simplement dire son nom, au minimum. Si la méthode n’attend pas de paramètres pour @@ -55,7 +53,6 @@ de la méthode `h`\: irb(main):018:0> h("Matz") Hello Matz! => nil -{: .code .ruby-code} Ça fonctionne… mais pourquoi ? et comment ? @@ -81,7 +78,6 @@ majuscule avec `capitalize`\: irb(main):023:0> h Hello World! => nil -{: .code .ruby-code} D’autres petits ajouts ont eu lieu dans ce dernier bout de code. Tout d’abord, nous n’appelons plus la méthode avec des parenthèses autour du @@ -110,7 +106,6 @@ dans la foulée créer une classe, “Greeter”. irb(main):033:2> end irb(main):034:1> end => nil -{: .code .ruby-code} Évidemment, la nouveauté la plus importante ici est le mot-clé `class`. Son rôle est de définir une nouvelle classe, en l’occurence `Greeter`, diff --git a/fr/documentation/quickstart/3/index.md b/fr/documentation/quickstart/3/index.md index d44db1ff9c..90e10fc321 100644 --- a/fr/documentation/quickstart/3/index.md +++ b/fr/documentation/quickstart/3/index.md @@ -14,7 +14,6 @@ Maintenant, créons un objet de la classe `Greeter` et animons-le : irb(main):037:0> g.say_bye Bye Pat, come back soon. => nil -{: .code .ruby-code} Une fois l’objet `g` créé, il se souvient que le nom qui lui est lié est Pat, comme indiqué à sa création. Il serait d’ailleurs intéressant de @@ -24,7 +23,6 @@ pouvoir récupérer directement ce nom. Essayons : SyntaxError: compile error (irb):52: syntax error         from (irb):52 -{: .code .ruby-code} Whoa, ça n’a pas l’air possible pour l’instant. @@ -54,7 +52,6 @@ Quelles sont les méthodes disponibles pour nos instances de la classe     "clone", "public_methods", "respond_to?", "freeze",     "say_bye", "__id__", "=~", "methods", "nil?", "dup",     "instance_variables", "instance_of?"] -{: .code .ruby-code} Ouch. Voilà une sacré liste de méthodes. Et pourtant, nous n’en avons défini que deux… d’où sortent donc les autres ? En fait, il s’agit d’une @@ -65,7 +62,6 @@ uniquement pour `Greeter`, il suffit de passer le paramètre `false`\: irb(main):040:0> Greeter.instance_methods(false) => ["say_bye", "say_hi"] -{: .code .ruby-code} Ok, c’est déjà plus confortable. Et conforme. Vérifions que c’est vrai, en testant quelles méthodes reconnaissent effectivement les instances de @@ -77,7 +73,6 @@ en testant quelles méthodes reconnaissent effectivement les instances de => true irb(main):043:0> g.respond_to?("to_s") => true -{: .code .ruby-code} Une instance de `Greeter` connaît donc `say_hi` et `to_s` (une méthode qui transforme « quelque chose » en une chaîne de caractère et qui est @@ -93,7 +88,6 @@ pour accéder aux variables d’instances : irb(main):045:1> attr_accessor :name irb(main):046:1> end => nil -{: .code .ruby-code} Il semblerait que nous ayons défini une seconde fois la classe `Greeter`... mais il n’en est rien. Nous l’avons simplement « ré-ouverte @@ -119,7 +113,6 @@ existants ! Créons un nouvel objet et testons l’artifice : irb(main):054:0> g.say_hi Hi Betty! => nil -{: .code .ruby-code} Le fait d’écrire `attr_accessor` a implicitement défini deux nouvelles méthodes à peu de frais : `name` pour récupérer la valeur de la @@ -200,7 +193,6 @@ Notre fichier va se présenter comme suit :   mg.say_hi   mg.say_bye end -{: .code .ruby-code} Sauvegardez ce fichier, par exemple en tant que “ri20min.rb” (l’extension .rb, pour ruby, est importante sous Windows, d’usage sous diff --git a/fr/documentation/quickstart/4/index.md b/fr/documentation/quickstart/4/index.md index 40e30db738..4de3eecac8 100644 --- a/fr/documentation/quickstart/4/index.md +++ b/fr/documentation/quickstart/4/index.md @@ -31,7 +31,6 @@ temps :     puts "Hello #{@names}!"   end end -{: .code .ruby-code} Elle jette maintenant un coup d’œil au paramètre `@name` pour décider de la suite. S’il s’agit de l’absence de valeur signalée par `nil`, elle @@ -53,7 +52,6 @@ Voyons d’un peu plus près cette fameuse itération : @names.each do |name|   puts "Hello #{name}!" end -{: .code .ruby-code} `each` est une méthode, un itérateur, qui travaille conjointement avec un bloc de code. Elle fait tourner ce bloc sur chaque élément récupéré @@ -71,7 +69,6 @@ La plupart des autres langages utilisent un itérateur célèbre, la « boucle for », ce qui donne par exemple en C : for (i=0; i -{: .code .ruby-code} Ce qui fonctionne parfaitement, mais n’est pas spécialement élégant. Vous devez en effet définir une variable locale telle que `i`, @@ -107,7 +104,6 @@ qui s’en moque totalement.     puts "Goodbye #{@names}. Come back soon!"   end end -{: .code .ruby-code} Cette méthode n’utilise pas `each`, mais la méthode `join` (si elle est comprise par `@names` ; sinon, elle écrit juste la valeur de `@names`, @@ -133,7 +129,6 @@ des appels à cette classe, la manipulation d’instances… Il reste un seul point d’ombre : if __FILE__ == $0 -{: .code .ruby-code} `__FILE__` est une variable « magique » qui contient le nom du fichier courant. `$0` contient quant à elle le nom du fichier utilisé pour diff --git a/fr/documentation/quickstart/index.md b/fr/documentation/quickstart/index.md index 8b5708c5f2..2a2cdb6554 100644 --- a/fr/documentation/quickstart/index.md +++ b/fr/documentation/quickstart/index.md @@ -31,7 +31,6 @@ IRB permet d’écrire et d’interpréter du Ruby *à la volée*, sans avoir à enregistrer un fichier et l’exécuter ensuite. irb(main):001:0> -{: .code .ruby-code} Voilà, IRB est lancé. Et maintenant ? @@ -40,7 +39,6 @@ que vous devrez faire après chaque nouvelle ligne). irb(main):001:0> "Hello World" => "Hello World" -{: .code .ruby-code} ## Ruby… au doigt et à l’œil @@ -54,7 +52,6 @@ peu plus : irb(main):002:0> puts "Hello World" Hello World => nil -{: .code .ruby-code} `puts` est la commande de base pour écrire quelque chose avec Ruby. Et qu’est-ce que `nil` que nous présente IRB ? Le résultat de notre @@ -68,7 +65,6 @@ Il est très facile d’utiliser IRB comme une vulgaire calculatrice : irb(main):003:0> 3+2 => 5 -{: .code .ruby-code} Trois plus deux. Assez facile, j’en conviens. Et *quid* de trois **fois** deux ? Notez ici que vous pouvez, si vous le voulez, appuyer @@ -78,13 +74,11 @@ signe `+` par `*`\: irb(main):004:0> 3*2 => 6 -{: .code .ruby-code} Maintenant, essayons trois au carré : irb(main):005:0> 3**2 => 9 -{: .code .ruby-code} Dans la syntaxe Ruby, `**` est là pour signifier « à la puissance… » ; et si vous souhaitez aller dans l’autre sens, à savoir obtenir la racine @@ -92,7 +86,6 @@ carré d’un nombre, vous écrirez ceci : irb(main):006:0> Math.sqrt(9) => 3.0 -{: .code .ruby-code} Un peu moins trivial. Vous avez vraisembablement deviné que cela demandait la racine carré (Ndt : ***sq**uare* ***r***oo***t*** en @@ -134,7 +127,6 @@ opération mathématique, il suffit de l’assigner à une variable. => 16 irb(main):009:0> Math.sqrt(a+b) => 5.0 -{: .code .ruby-code} Bien, notre calculatrice est déjà un bon début, mais le sujet principal de ce tutoriel est le programme *Hello World*. Revenons donc à nos diff --git a/fr/documentation/ruby-from-other-languages/index.md b/fr/documentation/ruby-from-other-languages/index.md index 6e10e991f0..3e4bd62285 100644 --- a/fr/documentation/ruby-from-other-languages/index.md +++ b/fr/documentation/ruby-from-other-languages/index.md @@ -47,7 +47,6 @@ C++ ou java < 1.5) ou sur une liste (comme en Perl, avec for (@a)   # Nous sommes dans le bloc.   # Travaillons avec l'item_courant de la liste... end -{: .code .ruby-code} Pour plus d’informations sur `each` et ses méthodes apparentées (`collect`, `find@n @inject`, `sort`, etc.), voyez `ri Enumerable` dans @@ -64,7 +63,6 @@ qui suit est possible : x = 10 y = 11 z = if x true -{: .code .ruby-code} ### Les symboles ne sont pas des chaînes allégées @@ -82,7 +80,6 @@ notion : irb(main):002:0> "george".object_id == "george".object_id => false irb(main):003:0> -{: .code .ruby-code} La méthode `object_id` retourne l’identité d’un objet donné. Si deux objets ont la même identité, alors il s’agit d’un seul et même objet @@ -118,7 +115,6 @@ objet à part entière—objet acceptant les manipulations usuelles du type MaClass = Class.new do   attr_accessor :var_instance end -{: .code .ruby-code} ### Des constantes variables @@ -142,7 +138,6 @@ conduire à des confusions, comme dans l’exemple qui suit : def Constante   11 end -{: .code .ruby-code} `Constante` vaut 10, mais `Constante()` vaut 11. ### De vrai-faux paramètres mot-clés @@ -156,7 +151,6 @@ mécanisme. Exemple : end param_motcle( :param_un => 10, :param_deux => 42 ) # => {:param_un=>10, :param_deux=>42} -{: .code .ruby-code} ### Toujours dire la vérité @@ -170,7 +164,6 @@ Voyez par exemple le bout de code suivant, écrit en Python :   print "0 est vrai/true" else:   print "0 est faux/false" -{: .code .ruby-code} Ce qui affichera « 0 est faux/false. » L’équivalent en Ruby, maintenant : @@ -181,7 +174,6 @@ Ce qui affichera « 0 est faux/false. » L’équivalent en Ruby, maintenant else   puts "0 est faux/false" end -{: .code .ruby-code} Cette fois, vous lirez « 0 est vrai/true. » @@ -194,7 +186,6 @@ Considérez le bout de code suivant :   def a_method; true; end   def another_method; false; end end -{: .code .ruby-code} Vous pourriez vous attendre à ce que `another_method` soit publique. Ce n’est pas le cas. Le mot-clé `private` est effectif jusqu’à la fin de la @@ -210,7 +201,6 @@ mot-clé change la donne. Par défaut, les méthodes sont publiques :   # Cette méthode est privée   def another_method; false; end end -{: .code .ruby-code} `public`, `private` et `protected` sont des méthodes à part entière, elles peuvent prendre des paramètres. Si vous passez un symbole à l’une @@ -271,7 +261,6 @@ Un exemple, repris de la [FAQ Ruby][1]\:         from (irb):25         from :0 irb(main):026:0> -{: .code .ruby-code} ### Les classes restent ouvertes @@ -290,7 +279,6 @@ méthodes pour traiter le temps, au sein de `Fixnum`. Voyez ceci :    # 14 heures après le 1er janvier à 00h00 Time.mktime(2006, 01, 01) + 14.hours # => Sun Jan 01 14:00:00 -{: .code .ruby-code} ### Indices sémantiques sur les méthodes @@ -328,7 +316,6 @@ disponible que pour l’objet défini. # Les autres objets ne sont pas affectés other_car = Car.new other_car.inspect # => Cheap car -{: .code .ruby-code} ### Gestion des méthodes manquantes @@ -350,7 +337,6 @@ bibliothèques exploitent cette possibilité. Voici un exemple : __ :a, :b, 10 # => La méthode __ a été appelée, mais elle n'existe pas. Voici les paramètres de l'appel : # arguments: a, b, 10 -{: .code .ruby-code} Le code ci-dessus ne fait qu’afficher les détails de l’appel, mais vous êtes libres de manipuler tout ça à votre guise. @@ -366,7 +352,6 @@ message envoyé* à un autre objet—voyez plutôt : 1.+(2) # qui est la même chose que : 1.send "+", 2 -{: .code .ruby-code} ### Les blocs aussi sont des objets—bien qu’ils ne le sachent pas (encore) @@ -382,7 +367,6 @@ d’arguments, comme ceci : addition = bloc { |a, b| a + b } # addition est maintenant un objet du genre Proc addition.class # => Proc -{: .code .ruby-code} Cela signifie que vous pouvez créer des blocs en-dehors du contexte des appels de méthode, en utilisant `Proc.new` avec un bloc ou en appelant @@ -392,7 +376,6 @@ De la même façon, les méthodes sont également des objets bien réels : method(:puts).call "puts est un objet !" # => puts est un objet ! -{: .code .ruby-code} ### Opérer sur les opérateurs @@ -406,7 +389,6 @@ pouvez, par exemple, redéfinir la méthode `+` de la classe `Fixnum`\:     self - other   end end -{: .code .ruby-code} Pas besoin des `operator+` comme en C++, etc. diff --git a/id/about/index.md b/id/about/index.md index 49ee1a951f..4862c9e509 100644 --- a/id/about/index.md +++ b/id/about/index.md @@ -72,7 +72,6 @@ Pendekatan murni berorientasi obyek terutama terlihat pada demonstrasi sedikit kode yang diberikan pada number. 5.times { print "Kami *cinta* Ruby -- Ruby sungguh aduhai!" } -{: .code .ruby-code} Di banyak bahasa-bahasa lain, number dan tipe primitif bukan obyek. Ruby mengikuti pengaruh bahasa Smalltalk dengan memberikan metode dan @@ -98,7 +97,6 @@ dapat menambahkan metode tersebut pada kelas builtin `Numeric`. y = 5.plus 6 # y sekarang adalah 11 -{: .code .ruby-code} Demi kemudahan, operator-operator Ruby adalah juga metode. Anda juga bisa mendefinisikan ulang operator. @@ -119,7 +117,6 @@ ingin menghormati kultur Lisp di closure Ruby[4](#fn4).”   %w[Google Yahoo MSN].map do |engine|     "http://www." + engine.downcase + ".com"   end -{: .code .ruby-code} Pada kode diatas, blok dijelaskan dalam bentuk `do ... end`. Metode `map` memberlakukan blok agar menerima array kata-kata (Google, Yahoo @@ -144,7 +141,6 @@ setiap kelas yang mengimplementasikan metode `each` bisa mixin module class MyArray   include Enumerable end -{: .code .ruby-code} Secara umum, Rubyist menganggap ini sebagai cara yang lebih diff --git a/id/documentation/quickstart/2/index.md b/id/documentation/quickstart/2/index.md index 6d40322c99..ded6d713ac 100644 --- a/id/documentation/quickstart/2/index.md +++ b/id/documentation/quickstart/2/index.md @@ -12,7 +12,6 @@ metode! irb(main):011:1> puts "Hello World!" irb(main):012:1> end => nil -{: .code .ruby-code} Kode `def h` memulai definisi suatu metode. Kode tersebut berkata pada Ruby bahwa kita sedang mendefinisikan sebuah metode, yang bernama `h`. @@ -32,7 +31,6 @@ Sekarang mari kita coba menjalankan metode tersebut berulang kali: irb(main):014:0> h() Hello World! => nil -{: .code .ruby-code} Nah, mudah khan?! Pemanggilan metode di Ruby memang semudah menyebut nama metode yang bersangkutan ke Ruby. Jika metode tidak menerima @@ -51,7 +49,6 @@ agar menerima `name` sebagai parameter. irb(main):018:0> h("Matz") Hello Matz! => nil -{: .code .ruby-code} Sukses… tetapi coba kita lihat dulu sebentar apa yang terjadi disini. @@ -75,7 +72,6 @@ depannya (singkatnya, dikapitalkan, bahasa Inggrisnya, di-capitalize): irb(main):023:0> h Hello World! => nil -{: .code .ruby-code} Ada beberapa trik di metode barusan. Trik pertama, kita panggil metode tanpa menggunakan buka dan tutup kurung lagi. Jika sudah jelas apa yang @@ -103,7 +99,6 @@ untuk keperluan itu. Maka, mari kita buat kelas “TukangSapa”. irb(main):033:2> end irb(main):034:1> end => nil -{: .code .ruby-code} Keyword baru disini adalah `class`. Keyword ini mendifinisikan kelas baru yang disebut TukangSapa dan beberapa metode untuk kelas TukangSapa diff --git a/id/documentation/quickstart/3/index.md b/id/documentation/quickstart/3/index.md index 2125e4a6c0..5166ed5da8 100644 --- a/id/documentation/quickstart/3/index.md +++ b/id/documentation/quickstart/3/index.md @@ -14,7 +14,6 @@ Mari kita bikin obyek TukangSapa dan kita pakai: irb(main):015:0> t.say_bye Bye Arie, datang lagi ya. => nil -{: .code .ruby-code} Sekali obyek `t` dibuat, maka obyek `t` mengingat name adalah Arie. Hmm, bagaimana jika kita ingin mendapatkan nama saja langsung? @@ -24,7 +23,6 @@ bagaimana jika kita ingin mendapatkan nama saja langsung? (irb):17: syntax error, unexpected tIVAR         from (irb):17         from :0 -{: .code .ruby-code} Tidak, caranya tidak bisa begitu. @@ -51,7 +49,6 @@ Jadi metode-metode apa yang sebetulnya ada pada obyek TukangSapa? "extend", "to_s", "say_bye", "hash", "class", "tainted?", "=~", "private_methods", "nil?", "untaint", "is_a?"] -{: .code .ruby-code} Wih. Metode-metodenya banyak ya. Padahal kita hanya mendefinisikan dua metode. Apa yang sebenarnya terjadi? Jadi ini barusan adalah **semua** @@ -64,7 +61,6 @@ didefinisikan kelas induk (ancestor). irb(main):019:0> TukangSapa.instance_methods(false) => ["say_bye", "say_hai"] -{: .code .ruby-code} Nah, begitu. Sekarang coba kita lihat metode yang mana dari obyek TukangSapa kita yang merespon siapa saja: @@ -77,7 +73,6 @@ TukangSapa kita yang merespon siapa saja: => true irb(main):023:0> t.respond_to?('to_s') => true -{: .code .ruby-code} Hm, jadi obyek mengetahui metode `say_hai`, dan metode `to_s` (artinya mengkonversi suatu obyek ke string, metode yang didefinisikan secara @@ -93,7 +88,6 @@ menyediakan cara yang mudah untuk mengakses variabel obyek. irb(main):025:1> attr_accessor :name irb(main):026:1> end => nil -{: .code .ruby-code} Di Ruby, Anda dapat membuka kelas lagi dan memodifikasi kelas tersebut. Perubahan-perubahan tersebut akan hadir pada obyek baru yang Anda buat @@ -119,7 +113,6 @@ property `@name`. irb(main):034:0> t.say_hai Hai Yohanes! => nil -{: .code .ruby-code} Dengan menggunakan `attr_accessor` kita sudah mendefinisikan dua metode baru untuk kita, `name` untuk mendapatkan (get) value, dan `name=` untuk @@ -197,7 +190,6 @@ Untuk keluar dari IRB, ketik “quit”, “exit” atau tekan saja Control-D.   mg.say_hai   mg.say_bye end -{: .code .ruby-code} Simpan file dengan nama “ri20min.rb”, dan jalankan dengan “ruby ri20min.rb”. Outputnya seharusnya menjadi sebagai berikut: diff --git a/id/documentation/quickstart/4/index.md b/id/documentation/quickstart/4/index.md index 44766f0ece..8c66985a2a 100644 --- a/id/documentation/quickstart/4/index.md +++ b/id/documentation/quickstart/4/index.md @@ -27,7 +27,6 @@ Metode `say_hai` kita sudah punya trik sedikit:     puts "Hello #{@names}!"   end end -{: .code .ruby-code} Sekarang kelas memperhatikan parameter `@names` untuk menentukan pilihan. Jika parameter nil, maka print tiga dot (...). Ya karena memang @@ -46,7 +45,6 @@ Mari kita perhatikan iterator lebih dalam lagi: @names.each do |name|   puts "Hello #{name}!" end -{: .code .ruby-code} `each` merupakan metode yang menerima blok kode yang kemudian menjalankan blok kode tersebut untuk setiap elemen dalam list, dan @@ -62,7 +60,6 @@ Kebanyakan bahasa-bahasa pemrograman lain menangani list dengan menggunakan perulangan `for`, kalau di C seperti ini: for (i=0; i -{: .code .ruby-code} Kode diatas memang jalan, tetapi tidak begitu elegan. Anda perlu variabel `i`, untuk mencari tahu berapa panjang/total list, dan juga @@ -91,7 +88,6 @@ diluar dari sepengatahuan user)     puts "Sampai jumpa #{@names}. Datang lagi ya!"   end end -{: .code .ruby-code} Metode `say_bye` tidak menggunakan `each`, tetapi memeriksa apakah `@names` merespon metode `join`, jika Ya, maka gunakan join. Tetapi jika @@ -112,7 +108,6 @@ memanggil metode-metode pada kelas tersebut. Ada satu trik yang perlu diperhatikan di baris: if __FILE__ == $0 -{: .code .ruby-code} `__FILE__` adalah variabel magic yang berisi nama file saat ini. `$0` adalah nama file yang dipakai ketika memulai program. Pemeriksaan ini diff --git a/id/documentation/quickstart/index.md b/id/documentation/quickstart/index.md index 74738aba6e..109b154803 100644 --- a/id/documentation/quickstart/index.md +++ b/id/documentation/quickstart/index.md @@ -24,7 +24,6 @@ Buka IRB. ^ irb(main):001:0> -{: .code .ruby-code} Ok, sekarang irb sudah dibuka. Sekarang mau apa? @@ -32,7 +31,6 @@ Ketik ini: `"Hello World"` irb(main):001:0> "Hello World" => "Hello World" -{: .code .ruby-code} ## Ruby Mematuhi Anda! @@ -45,7 +43,6 @@ kita perlu tambahkan sedikit: irb(main):002:0> puts "Hello World" Hello World => nil -{: .code .ruby-code} `puts` merupakan perintah dasar untuk mencetak (print) sesuatu di Ruby. Tetapi kemudian apa artinya `=> nil` ? Artinya adalah result dari @@ -58,7 +55,6 @@ Dengan IRB kita sudah cukup mempunyai kalkulator dasar: irb(main):003:0> 3+2 => 5 -{: .code .ruby-code} Tiga tambah dua. Cukup mudah. Bagaimana dengan tiga *kali* dua? Anda bisa mencoba dengan langsung mengetikkannya, cukup pendek, tetapi Anda @@ -70,13 +66,11 @@ menggantinya dengan tanda `*`. irb(main):004:0> 3*2 => 6 -{: .code .ruby-code} Lanjut, mari kita coba tiga kuadrat: irb(main):005:0> 3**2 => 9 -{: .code .ruby-code} Di Ruby, `**` merupakan cara Anda mengatakan “kepada kekuatan dari”. Tetapi bagaimana jika Anda ingin melakukannya dengan cara lain dan @@ -84,7 +78,6 @@ mendapatkan akar dari suatu bilangan? irb(main):006:0> Math.sqrt(9) => 3.0 -{: .code .ruby-code} Ok, tunggu dulu, bagaimana yang terakhir itu? Jika Anda menebak, “Kode tersebut mencari sqrt (akar) dari 9”, berarti Anda benar. Tetapi mari @@ -117,7 +110,6 @@ matematika ini? Caranya assign hasilnya ke variabel. => 16 irb(main):009:0> Math.sqrt(a+b) => 5.0 -{: .code .ruby-code} Sehebat kalkulator, kita sudah pergi dari message tradisional `Hello World` yang biasanya selalu saja kalau ada tutorial untuk pemula diff --git a/id/documentation/ruby-from-other-languages/index.md b/id/documentation/ruby-from-other-languages/index.md index 2610186064..2371b1b962 100644 --- a/id/documentation/ruby-from-other-languages/index.md +++ b/id/documentation/ruby-from-other-languages/index.md @@ -63,7 +63,6 @@ sering** melihat kode yang mirip seperti ini di Ruby:   # orang_ini disebut parameter blok   puts orang_ini.nama end -{: .code .ruby-code} Untuk info lebih lanjut tentang `each` (dan teman-temannya seperti `collect`, `find`, `inject`, `sort`, dan lain-lain.), lihat `ri @@ -78,7 +77,6 @@ juga tetap punya *value*). Ini karena: x = 10 y = 11 z = if x true -{: .code .ruby-code} ### Symbol Bukan String @@ -94,7 +92,6 @@ perbedaan berikut ini: irb(main):002:0> "joko".object_id == "joko".object_id => false irb(main):003:0> -{: .code .ruby-code} Metode `object_id` mengembalikan identitas dari sebuah `Object`. Jika ada dua obyek memiliki `object_id` yang sama, maka mereka sebenarnya @@ -128,7 +125,6 @@ perlakuan Anda terhadap obyek-obyek lain: KelasSaya = Class.new do   attr_accessor :variabel_instan end -{: .code .ruby-code} ### Konstanta @@ -154,7 +150,6 @@ membingungkan, seperti ditunjukkan pada contoh berikut: def Konstanta   11 end -{: .code .ruby-code} Sekarang `Konstanta` adalah 10, tetapi `Konstanta()` adalah 11. @@ -172,7 +167,6 @@ dibuat dengan Ruby, banyak menggunakan trik ini. Contoh: keluarkan( :param_satu => 10, :param_dua => 42 ) # => {:param_satu=>10, :param_dua=>42} -{: .code .ruby-code} Ini dikarenakan Ruby otomatis mengubah parameter yang diberikan tersebut menjadi bentuk hash. (meskipun pemanggilannya tanpa menggunakan kurung @@ -190,7 +184,6 @@ seperti list yang kosong, dianggap false. Perhatikan kode Python berikut   print "0 is true" else:   print "0 is false" -{: .code .ruby-code} Ini akan print “0 is false”. Kode yang sama di Ruby: @@ -200,7 +193,6 @@ Ini akan print “0 is false”. Kode yang sama di Ruby: else   puts "0 is false" end -{: .code .ruby-code} Print “0 is true”. @@ -213,7 +205,6 @@ Pada kode Ruby berikut ini,   def metode; true; end   def metode_lain; false; end end -{: .code .ruby-code} Anda mungkin berharap `metode_lain` adalah `public`. Tetapi tidak demikian. *Access modifier* `private` bersambung terus sampai akhir @@ -229,7 +220,6 @@ lebih awal. Secara default, metode bersifat `public`\:   # metode_lain adalah private   def metode_lain; false; end end -{: .code .ruby-code} `public`, `private` dan `protected` benar-benar merupakan metode, sehingga mereka bisa menerima parameter. Jika Anda melewatkan `Symbol` pada satu dari parameter, maka *visibility* metode diubah. ### Akses Metode @@ -283,7 +273,6 @@ pemanggilan metode private.         from (irb):25         from :0 irb(main):026:0> -{: .code .ruby-code} ### Kelas Bersifat Terbuka @@ -304,7 +293,6 @@ kode berikut: # 14 hours from 00:00 January 1st # jadi 14 jam dari jam 00:00 pada tanggal 1 Januari Time.mktime(2007, 01, 01) + 14.hours # => Sun Jan 01 14:00:00 -{: .code .ruby-code} ### Nama Metode Deskriptif dan Menarik @@ -344,7 +332,6 @@ tersebut tidak tersedia pada obyek-obyek yang lain dari kelas yang sama. # Sementara obyek-obyek yang lain tidak terpengaruh mobil_lain = Mobil.new mobil_lain.inspect # => Mobil murah -{: .code .ruby-code} ### Metode method\_missing @@ -371,7 +358,6 @@ dan banyak *library* yang melakukan hal yang sama. Contoh: # => Metode __ telah dipanggil, tetapi metode __ # tidak berhasil ditemukan. Metode tersebut # memiliki argument sebagai berikut: a, b, 10 -{: .code .ruby-code} Kode diatas hanya print detil tentang pemanggilan (call), tetapi Anda bisa dengan bebas menangani message dengan cara ini. @@ -387,7 +373,6 @@ lain: 1.+(2) # juga sebetulnya sama dengan penambahan ini : 1.send "+", 2 -{: .code .ruby-code} ### Blok Bisa Diubah Menjadi Sebuah Object @@ -403,7 +388,6 @@ contoh berikut: adder = blok { |a, b| a + b } # adder sekarang merupakan obyek Proc adder.class # => Proc -{: .code .ruby-code} Anda juga dapat membuat blok diluar pemanggilan metode dengan memanggil `Proc.new` dengan blok atau pemanggilan metode `lambda`. @@ -412,7 +396,6 @@ Ketika dibuat metode juga merupakan Object. method(:puts).call "puts adalah obyek!" # => puts adalah obyek! -{: .code .ruby-code} ### Operator adalah *Syntactic Sugar* @@ -430,7 +413,6 @@ kelas Fixnum:     self - other   end end -{: .code .ruby-code} Anda tidak membutuhkan `operator+` C++, dan seterusnya. diff --git a/id/documentation/ruby-from-other-languages/to-ruby-from-c-and-c-/index.md b/id/documentation/ruby-from-other-languages/to-ruby-from-c-and-c-/index.md index 0cff4365c7..bb3929f209 100644 --- a/id/documentation/ruby-from-other-languages/to-ruby-from-c-and-c-/index.md +++ b/id/documentation/ruby-from-other-languages/to-ruby-from-c-and-c-/index.md @@ -61,7 +61,6 @@ Anda dapat menuliskan program tersebut di Ruby sebagai berikut: b = gets.to_i c = a + b puts c -{: .code .ruby-code} Sumber: [A Very Quick Comparison of Popular Languages for Teaching Computer Programming][1] diff --git a/id/documentation/ruby-from-other-languages/to-ruby-from-java/index.md b/id/documentation/ruby-from-other-languages/to-ruby-from-java/index.md index 2f4c6d39c1..7dabf473a7 100644 --- a/id/documentation/ruby-from-other-languages/to-ruby-from-java/index.md +++ b/id/documentation/ruby-from-other-languages/to-ruby-from-java/index.md @@ -36,7 +36,6 @@ Anda dapat menuliskan program tersebut di Ruby sebagai berikut: b = gets.to_i c = a + b puts c -{: .code .ruby-code} Sumber: [A Very Quick Comparison of Popular Languages for Teaching Computer Programming][1], dengan modifikasi dari Yohanes Santoso diff --git a/id/documentation/ruby-from-other-languages/to-ruby-from-perl/index.md b/id/documentation/ruby-from-other-languages/to-ruby-from-perl/index.md index 6ad00161f4..cf4af802f8 100644 --- a/id/documentation/ruby-from-other-languages/to-ruby-from-perl/index.md +++ b/id/documentation/ruby-from-other-languages/to-ruby-from-perl/index.md @@ -37,7 +37,6 @@ Program tersebut dapat ditulis sebagai berikut di Ruby: \* puts sep puts "\n No more beer on the wall :-(" -{: .code .ruby-code} * Algoritma yang digunakan kedua program tersebut sedikit berbeda, tapi secara fungsionalitas sama. diff --git a/id/documentation/ruby-from-other-languages/to-ruby-from-php/index.md b/id/documentation/ruby-from-other-languages/to-ruby-from-php/index.md index 54a88ecc03..009327aef3 100644 --- a/id/documentation/ruby-from-other-languages/to-ruby-from-php/index.md +++ b/id/documentation/ruby-from-other-languages/to-ruby-from-php/index.md @@ -22,7 +22,6 @@ Anda dapat menuliskan program tersebut di Ruby sebagai berikut: b = gets.to_i c = a + b puts c -{: .code .ruby-code} ### Kemiripan Ruby dan PHP diff --git a/id/documentation/ruby-from-other-languages/to-ruby-from-python/index.md b/id/documentation/ruby-from-other-languages/to-ruby-from-python/index.md index fcfe4d14dc..174b1fd04f 100644 --- a/id/documentation/ruby-from-other-languages/to-ruby-from-python/index.md +++ b/id/documentation/ruby-from-other-languages/to-ruby-from-python/index.md @@ -27,7 +27,6 @@ Anda dapat menuliskan program tersebut di Ruby sebagai berikut: b = gets.to_i c = a + b puts c -{: .code .ruby-code} Sumber: [A Very Quick Comparison of Popular Languages for Teaching Computer Programming][1] diff --git a/id/news/_posts/2008-03-31-rush-ruby-shell-sistem-operasi-abstrak-dalam-ruby.md b/id/news/_posts/2008-03-31-rush-ruby-shell-sistem-operasi-abstrak-dalam-ruby.md index 1f18c27ce7..d759b1a9d2 100644 --- a/id/news/_posts/2008-03-31-rush-ruby-shell-sistem-operasi-abstrak-dalam-ruby.md +++ b/id/news/_posts/2008-03-31-rush-ruby-shell-sistem-operasi-abstrak-dalam-ruby.md @@ -9,7 +9,6 @@ dan remote login (ssh), yang ditulis dengan Ruby dan menerima syntax Ruby untuk menjalankan sistem operasi. Seperti operasi berikut: processes.each { |p| p.kill if p.command == “mongrel_rails“ } -{: .code .ruby-code} Atau @@ -19,7 +18,6 @@ Atau remote_dir = remote[’/home/myproj/app/‘] local_dir.copy_to remote_dir remote_dir[’**/.svn/‘].each { |d| d.destroy } -{: .code .ruby-code} Anda dapat membuat sesuatu dengan menggunakan usual UNIX commands, Rush abstracts sebuah kumpulan dari sitem tasks dan memudahkan anda untuk diff --git a/id/news/_posts/2008-05-28-21-trik-trik-ruby.md b/id/news/_posts/2008-05-28-21-trik-trik-ruby.md index df8c0f097e..496add4217 100644 --- a/id/news/_posts/2008-05-28-21-trik-trik-ruby.md +++ b/id/news/_posts/2008-05-28-21-trik-trik-ruby.md @@ -28,7 +28,6 @@ bisa dipakai agar proses hidup lebih sejahtera. email.match(/(x)/)[1] # => NoMethodError [:(] email[/(x)/, 1] # => nil email[/([bcd]).*?([fgh])/, 2] # => “g” -{: .code .ruby-code} **2 – Shortcut buat Array#join** @@ -39,7 +38,6 @@ buat string ketimbang memakai Array#join! %w{ariekeren lagi ngetes} * ", " # => "ariekeren, lagi, ngetes" h = { :name => "ArieKeren“, :age => 27 }h.map { |i| i * "=" } * "\n" # => “age=27\nname=ArieKeren” -{: .code .ruby-code} **3 – Cara Cepat Memformat Angka Desimal** @@ -49,7 +47,6 @@ dengan formatting interpolation: duit = 9.5 "%.2f" % duit # => “9.50″ -{: .code .ruby-code} **4 – Cara Cepat Mengapit Teks** @@ -57,14 +54,12 @@ Teknik formatting interpolation dari nomor ketiga keluar lagi, kali ini adalah bagaimana menyisipkan suatu string ke string yang lain: "[%s]" % "stringnya pindah doang" # => “[stringnya pindah doang]” -{: .code .ruby-code} Anda juga bisa menggunakan elemen-elemen dari array untuk mengganti penempatan string tersebut: x = %w{p ketemulagi p} "%s%s>" % x # => “ketemulagi" -{: .code .ruby-code} **5 – Menghapus direktori beserta seluruh isinya** @@ -74,7 +69,6 @@ direktori berikut seluruh isinya: require 'fileutils' FileUtils.rm_r 'somedir' -{: .code .ruby-code} Hati-hati kalau Anda menggunakan cara ini! @@ -91,7 +85,6 @@ Contah dengan Array: b = %w{c d} [ a + b ] # => [[”a”, “b”, “c”, “d”]] [ *a + b ] # => [”a”, “b”, “c”, “d”] -{: .code .ruby-code} Contoh dengan Hash: @@ -103,7 +96,6 @@ Contoh dengan Hash: [*a] # => [[:name, "ArieKeren"], [:age, 27]] -{: .code .ruby-code} Contoh dengan tangkapan parameter paralel: @@ -115,7 +107,6 @@ Contoh dengan tangkapan parameter paralel: a.values_at(*b) # => ["a", "f", "g"] -{: .code .ruby-code} **7 – Persingkat definisi variabel lokal** @@ -124,8 +115,7 @@ Daripada mendefinisikan variabel lokal dengan beragam konten awal bisa langsung mendefinisikan variabel lokal “sekaligus” ketika operasi sedang berlangsung: - (z ||= []) -{: .code .ruby-code} + (z ||= []) **8 – Penggunaan yang-bukan-string maupun yang-bukan-simbol sebagai hash key** @@ -141,7 +131,6 @@ dahsyat): is[10 > 5] # => “Yes” -{: .code .ruby-code} **9 – Gunakan ‘and’ dan ‘or’ untuk mengelompokkan operasi satu baris** @@ -152,8 +141,7 @@ yang pendek-pendek: queue = [] %w{hello x world}.each do |word| -   queue -{: .code .ruby-code} +   queue **10 – Menentukan eksekusi kode** @@ -166,7 +154,6 @@ atau tidak: if __FILE__ == $0   # Do something.. run tests, call a method, etc. We're direct. end -{: .code .ruby-code} **11 – Mempercepat assignment sekaligus (mass assignment)** @@ -175,7 +162,6 @@ awal-awal ya, tetapi adalah sesuatu yang amazing dan menyenangkan betapa jarang trik ini digunakan: a, b, c, d = 1, 2, 3, 4 -{: .code .ruby-code} Trik ini bisa dipakai di banyak kasus seperti menangkap parameter argumen suatu metode yang berupa array dengan tanda \* (bintang) : @@ -183,7 +169,6 @@ argumen suatu metode yang berupa array dengan tanda \* (bintang) : def my_method(*args)   a, b, c, d = args end -{: .code .ruby-code} **12 – Gunakan range daripada perbandingan rumit untuk angka** @@ -196,12 +181,10 @@ Tidak ada lagi kode omong kosong seperti if x > 1000 && x         when 1980..1989: "Delapanpuluhan"         when 1990..1999: "Sembilanpuluhan"       end -{: .code .ruby-code} **13 – Gunakan Enumeration untuk menghindari kode-kode berulang** %w{rubygems daemons eventmachine}.each { |x| require x } -{: .code .ruby-code} **14 – Operator Ternary** @@ -214,7 +197,6 @@ tetapi terkadang bisa membuat banyak hal menjadi singkat dan padat. # Atau.. bisa juga digunakan untuk assignment yang bersandar pada hasil operator ternary LOG.sev_threshold = ENVIRONMENT == :development ? Logger::DEBUG : Logger::INFO -{: .code .ruby-code} **15 – Operator Ternary Bersarang (Nested Ternary Operators)** @@ -225,7 +207,6 @@ hanya urusan return obyek saja sama seperti banyak obyek lain di Ruby. qty == 0 ? 'none' : qty == 1 ? 'one' : 'many' # Hanya sebagai ilustrasi saja supaya tidak bingung: (qty == 0 ? 'none' : (qty == 1 ? 'one' : 'many')) -{: .code .ruby-code} **16 – Maksimalkan penggunaan fitur bawaan logis di Ruby** @@ -240,7 +221,6 @@ berikut:     return true   end end -{: .code .ruby-code} Mungkin kita bisa saja menggunakan operator ternary untuk improve? @@ -248,7 +228,6 @@ Mungkin kita bisa saja menggunakan operator ternary untuk improve?   # Jangan sekali-sekali menaruh false dan true pada operator ternary!!   x % 2 == 0 ? false : true end -{: .code .ruby-code} Ya, kode barusan tadi memang lebih pendek, dan saya sering melihat pattern seperti itu, padahal sebenarnya Anda seharusnya bisa selangkah @@ -259,7 +238,6 @@ comparison Ruby yang berupa true maupun false langsung!   # Gunakan hasil logis yang sudah disediakan Ruby secara otomstis untuk Anda..   x % 2 != 0 end -{: .code .ruby-code} **17 – Perhatikan seluruh exception backtrace** @@ -269,14 +247,12 @@ comparison Ruby yang berupa true maupun false langsung! rescue => exception   puts exception.backtrace end -{: .code .ruby-code} **18 – Manfaatkan obyek tunggal DAN array agar dapat dienumerasikan** [*items].each do |item|   # … end -{: .code .ruby-code} **19 – Rescue yang berada dalam blok tidak perlu diapit ‘begin’** @@ -292,7 +268,6 @@ comparison Ruby yang berupa true maupun false langsung! rescue   # … end -{: .code .ruby-code} **20 – Komentar format blok** @@ -302,14 +277,12 @@ dengan pagar ataupun menggunakan blok begin dan end: puts "x" =begin  ini adalah blok komentar  Anda dapat menaruh apa saja yang Anda suka disini!  puts “y”=end puts "z" -{: .code .ruby-code} **21 – Rescue satu baris** h = { :age => 10 } h[:name].downcase # ERROR h[:name].downcase rescue "No name" # => “No name” -{: .code .ruby-code} Jika Anda ingin mem-posting daftar trik-trik Ruby di blog Anda, kirimkan trackback kesini atau berkomentarlah lewat media milis ID Ruby maupun diff --git a/id/news/_posts/2008-08-23-dos-vulnerability-di-rexml.md b/id/news/_posts/2008-08-23-dos-vulnerability-di-rexml.md index 8e65b0c245..5de8e37044 100644 --- a/id/news/_posts/2008-08-23-dos-vulnerability-di-rexml.md +++ b/id/news/_posts/2008-08-23-dos-vulnerability-di-rexml.md @@ -27,7 +27,6 @@ memparse dokumen yang berisikan entitas bersarang rekursif seperti: ]> &a; -{: .code .ruby-code} @@ -55,7 +54,6 @@ menggunakan REXML. ... doc = REXML::Document.new(str) ... -{: .code .ruby-code} @@ -64,7 +62,6 @@ ke direktori yang berada di load path (misalkan di `RAILS_ROOT/lib/`), dan tambahkan baris-baris kode berikut ini ke `config/environment.rb`. require "rexml-expansion-fix" -{: .code .ruby-code} diff --git a/it/about/index.md b/it/about/index.md index d9adfda5a1..184effc000 100644 --- a/it/about/index.md +++ b/it/about/index.md @@ -70,7 +70,6 @@ facilmente dimostrabile dalla seguente porzione di codice che applica un’azione ad un numero: 5.times { print "Ruby è un linguaggio fantastico" } -{: .code .ruby-code} In molti linguaggi, i numeri e gli altri tipi primitivi non sono oggetti, ma Ruby, seguendo l’esempio di Smalltalk, dà metodi e variabili @@ -96,7 +95,6 @@ puoi creare tale metodo aggiungendolo alla stessa classe `Numeric`, che y = 5.aggiungi 6 # y è ora uguale a 11 -{: .code .ruby-code} Gli operatori di Ruby non sono altro che un modo semplice per eseguire operazioni normalmente effettuate dai metodi, e possono essere @@ -118,7 +116,6 @@ Lisp[4](#fn4).”   %w[Google Yahoo MSN].map do |sito|     "http://www." + sito.downcase + ".com"   end -{: .code .ruby-code} In questo pezzo di codice, il blocco è deimitato dal costrutto `do ... end`, e il metodo `map` applica il codice del blocco alla lista di @@ -143,7 +140,6 @@ qualsiasi classe che implementa il metodo `each` può includere il modulo class IlMioArray   include Enumerable end -{: .code .ruby-code} Generalmente, gli appassionati di Ruby considerano questa pratica molto più pulita e gestibile dell’eredità multipla, che è complessa e può diff --git a/it/documentation/quickstart/2/index.md b/it/documentation/quickstart/2/index.md index 60d20dd8d3..679965a455 100644 --- a/it/documentation/quickstart/2/index.md +++ b/it/documentation/quickstart/2/index.md @@ -11,7 +11,6 @@ Dobbiamo definire un metodo! irb(main):011:1> puts "Ciao Mondo!" irb(main):012:1> end => nil -{: .code .ruby-code} Il codice `def c` apre la definizione del metodo. Non fa altro che dire a Ruby che stiamo definendo un metodo, il cui nome è `c`. La linea @@ -30,7 +29,6 @@ Ora proviamo questo metodo più volte: irb(main):014:0> c() Ciao Mondo! => nil -{: .code .ruby-code} Bene, fino a qui è facile. Chiamare un metodo in Ruby è semplice, basta scrivere il suo nome. Se il metodo non ha bisogno parametri, questo è @@ -47,7 +45,6 @@ Basta ridefinire `c` in modo che accetti “nome” come parametro. irb(main):018:0> c("Matz") Ciao Matz! => nil -{: .code .ruby-code} Così funziona… ma diamo un’occhiata a cosa sta succedendo. @@ -69,7 +66,6 @@ le iniziali maiuscole: irb(main):023:0> c Ciao Mondo! => nil -{: .code .ruby-code} Ci sono molte altre cose che puoi fare in questo modo. Una è chiamare il metodo senza le parentesi. Se quello che stai facendo è ovvio, le @@ -95,7 +91,6 @@ oggetto. Creiamo quindi una classe chiamata “PersonaCordiale”. irb(main):033:2> end irb(main):034:1> end => nil -{: .code .ruby-code} La nuova parola qui è `class`, essa definisce una nuova classe chiamata PersonaCordiale ed una serie di metodi. Fai attenzione a `@nome`. Questa diff --git a/it/documentation/quickstart/3/index.md b/it/documentation/quickstart/3/index.md index b168b5e51b..8451466cf3 100644 --- a/it/documentation/quickstart/3/index.md +++ b/it/documentation/quickstart/3/index.md @@ -14,7 +14,6 @@ Bene, creiamo il nostro oggetto PersonaCordiale e usiamolo: irb(main):037:0> p.congeda Arrivederci Mario, a presto. => nil -{: .code .ruby-code} Una volta che l’oggetto `p` è stato creato, ricorda che il nome è Mario. Ma cosa succede se vogliamo accedere direttamente al nome? @@ -23,7 +22,6 @@ Ma cosa succede se vogliamo accedere direttamente al nome? SyntaxError: compile error (irb):52: syntax error         from (irb):52 -{: .code .ruby-code} Nulla, non si può. @@ -47,7 +45,6 @@ Quindi quanti metodi esistono per il l’oggetto PersonaCordiale?     "clone", "public_methods", "respond_to?", "freeze",     "congeda", "__id__", "=~", "methods", "nil?", "dup",     "instance_variables", "instance_of?"] -{: .code .ruby-code} Ci sono moltissimi metodi! Eppure ne avevamo definiti solo due: cosa sta succedendo? Questi sono tutti i metodi per il nostro oggetto @@ -58,7 +55,6 @@ Dobbiamo dirgli di non elencare il metodi della sua classe genitore irb(main):040:0> PersonaCordiale.instance_methods(false) => ["saluta", "congeda"] -{: .code .ruby-code} Ah, ora va meglio! Vediamo a quali metodi risponde la nostra classe: @@ -68,7 +64,6 @@ Ah, ora va meglio! Vediamo a quali metodi risponde la nostra classe: => true irb(main):043:0> p.respond_to?("to_s") => true -{: .code .ruby-code} Bene, la nostra classe conosce `saluta` e `to_s` (che significa convertire “qualcosa” in una stringa, un metodo definito di default per @@ -83,7 +78,6 @@ per permetterci di accedere alle variabili di un oggetto. irb(main):045:1> attr_accessor :nome irb(main):046:1> end => nil -{: .code .ruby-code} In Ruby, puoi aprire una classe e modificarla. I cambiamenti vengono aggiunti a tutti gli oggetti che crei e sempre disponibili per gli @@ -108,7 +102,6 @@ oggetti esistenti della classe. Quindi creiamo un nuovo oggetto e irb(main):054:0> p.saluta Ciao Francesca! => nil -{: .code .ruby-code} Usando `attr_accessor` definiamo due nuovi metodi, `nome` per ricevere il valore e `nome=` per settarlo. @@ -185,7 +178,6 @@ Per chiudere IRB, scrivi “quit”, “exit” o semplicemnte premi Control-D.   adt.saluta   adt.congeda end -{: .code .ruby-code} Salva questo file come “ri20min.rb” ed eseguilo così “ruby ri20min.rb” Verrà mostrato qualcosa di simile: diff --git a/it/documentation/quickstart/4/index.md b/it/documentation/quickstart/4/index.md index 1e659aa031..62c229bdda 100644 --- a/it/documentation/quickstart/4/index.md +++ b/it/documentation/quickstart/4/index.md @@ -25,7 +25,6 @@ Il nostro metodo `saluta` è diventato un pochino più complicato.     puts "Ciao #{@nomi}!"   end end -{: .code .ruby-code} Ora controlla la variabile di istanza `@nomi` per prendere una decisione. Se è nil, mostra tre puntini: senza nome non possiamo @@ -42,7 +41,6 @@ Vediamo l’iterazione in modo più approfondito: @nomi.each do |nome|   puts "Ciao #{nome}!" end -{: .code .ruby-code} `each` è un metodo che accetta un bloccho di codice e lo ripete per ogni elemento nella lista, il codice tra `do` e `end` è il blocco che verrà @@ -56,7 +54,6 @@ Molti altri linguaggi di programmazione esaminano una lista utilizzando il ciclo `for`, in C si ottiene qualcosa di simile: for (i=0; i -{: .code .ruby-code} Funziona ma non è molto elegante. C’è bisogno di una variabile come `i`, capire quanto è lunga la lista e creare una funzione da ripetere. In @@ -84,7 +81,6 @@ gli errori. Tutti nascosti dagli occhi indiscreti degli utenti.     puts "Arrivederci #{@nomi}. A presto!"   end end -{: .code .ruby-code} Il metodo `congeda` non usa `each`, ma controlla se `@nomi` risponde al metodo `join` e in tal caso viene utilizzato. Se non risponde al metodo @@ -103,7 +99,6 @@ preoccupa di chiamare i metodi di questa classe. C’è qualcos’altro che dobbiamo vedere: if __FILE__ == $0 -{: .code .ruby-code} `__FILE__` è una variabile “magica” che contiene il nome del file. `$0` è il nome del file utilizzato per avviare il programma. Questo controllo diff --git a/it/documentation/quickstart/index.md b/it/documentation/quickstart/index.md index ec85891377..98b5c09341 100644 --- a/it/documentation/quickstart/index.md +++ b/it/documentation/quickstart/index.md @@ -23,7 +23,6 @@ Apri la shell interattiva di Ruby (IRB). ^ irb(main):001:0> -{: .code .ruby-code} Perfetto, ora è aperta… e adesso? @@ -31,7 +30,6 @@ Prova a scrivere `"Ciao Mondo"` irb(main):001:0> "Ciao Mondo" => "Ciao Mondo" -{: .code .ruby-code} ## Ruby ti ha obbedito! @@ -44,7 +42,6 @@ in più: irb(main):002:0> puts "Ciao Mondo" Ciao Mondo => nil -{: .code .ruby-code} `puts` è il comando base per stampare a schermo qualcosa, in Ruby. Invece `=> nil` in questo caso è il risultato dell’espressione, dal @@ -56,7 +53,6 @@ IRB si può usare come una calcolatrice: irb(main):003:0> 3+2 => 5 -{: .code .ruby-code} Tre più due è abbastanza semplice dopotutto. Così come tre per due, per esempio: potresti scriverlo direttamente in IRB, ma è anche possibile @@ -66,20 +62,17 @@ visualizzata, nel cui caso è solamente sufficiente sostituire `+` con irb(main):004:0> 3*2 => 6 -{: .code .ruby-code} Ora proviamo a calcolare il quadrato di tre: irb(main):005:0> 3**2 => 9 -{: .code .ruby-code} In Ruby `**` rappresenta l’operatore per calcolare le potenze. Mentre per calcolare una radice quadrata si fa così: irb(main):006:0> Math.sqrt(9) => 3.0 -{: .code .ruby-code} Già, funziona, ma che cosa è successo? E in particolare che cos’è `Math`? @@ -109,7 +102,6 @@ assegnarlo ad una variabile: => 16 irb(main):009:0> Math.sqrt(a+b) => 5.0 -{: .code .ruby-code} Sebbene tutto questo sia utile ai fini della nostra “calcolatrice”, ci stiamo allontanando droppo dal messaggio `Ciao Mondo` usato in tutti i diff --git a/it/documentation/ruby-from-other-languages/index.md b/it/documentation/ruby-from-other-languages/index.md index aaa998c0bd..74650de5b2 100644 --- a/it/documentation/ruby-from-other-languages/index.md +++ b/it/documentation/ruby-from-other-languages/index.md @@ -47,7 +47,6 @@ Ruby vedrai spesso costrutti come:   # Dentro il blocco:   # facciamo qualcosa con questo_elemento end -{: .code .ruby-code} Per maggiori informazioni su `each` e simili (`collect`, `find`, `inject`, `sort`, ecc.) vedi `ri Enumerable` (e poi ri @@ -61,7 +60,6 @@ valore, anche se tale valore è nullo (nil): x = 10 y = 11 z = if x true -{: .code .ruby-code} ### I Simboli *non* sono Stringhe! @@ -76,7 +74,6 @@ Per capire la differenza, prova a scrivere le espressioni seguenti in irb(main):002:0> "pippo".object_id == "pippo".object_id => false irb(main):003:0> -{: .code .ruby-code} Il metodo `object_id` ritorna l’identità di un’oggetto. Se due oggetti hanno la stessa `object_id` allora sono di fatto la stessacosa (puntano @@ -107,7 +104,6 @@ altro oggetto: MyClass = Class.new do   attr_accessor :instance_var end -{: .code .ruby-code} ### Costanti variabili @@ -132,7 +128,6 @@ può causare confusione, come nell’esempio seguente: def Costante   11 end -{: .code .ruby-code} In questo modo, `Costante` è 10, ma `Costante()` è 11. @@ -149,7 +144,6 @@ Esempio: end qualche_parola_chiave( :parametro_uno => 10, :parametro_due => 42 ) # => {:parametro_uno=>10, :parametro_due=>42} -{: .code .ruby-code} ### Verità universale @@ -165,7 +159,6 @@ applica anche ad atri linguaggi):   print "0 è true" else:   print "0 è false" -{: .code .ruby-code} Questo stamperà “0 is false”, mentre l’equivalente in Ruby: @@ -175,7 +168,6 @@ Questo stamperà “0 is false”, mentre l’equivalente in Ruby: else   puts "0 è false" end -{: .code .ruby-code} Stampa “0 è true”. @@ -188,7 +180,6 @@ Nel seguente codice Ruby:   def un_metodo; true; end   def un_altro_metodo; false; end end -{: .code .ruby-code} Ci si potrebbe aspettare che `un_altro_metodo` sia pubblico, ma non è così: il modificatore di accesso ‘private’ continua fino alla fine dello @@ -206,7 +197,6 @@ I metodi sono pubblici di default:   # un_altro_metodo è privato   def un_altro_metodo; false; end end -{: .code .ruby-code} `public`, `private` e `protected` sono, di fatto, dei metodi, e come tali accettano anche dei parametri. Per modificare la visibilità di un solo metodo, per esempio, è sufficiente passare un simbolo a tale metodo come parametro di un modificatore di accesso per cambiarne la visibilità. ### Accesso ai metodi @@ -258,7 +248,6 @@ usato come ricevente per una chiamata ad un metodo pubblico.         from (irb):25         from :0 irb(main):026:0> -{: .code .ruby-code} ### Classi aperte @@ -271,7 +260,6 @@ usato come ricevente per una chiamata ad un metodo pubblico.    # 14 ore dalla mezzanotte del primo gennaio 2006 Time.mktime(2006, 01, 01) + 14.hours # => Sun Jan 01 14:00:00 -{: .code .ruby-code} ### Metodi con nomi “strani” @@ -311,7 +299,6 @@ pertanto devinibili sull’oggetto per il quale sono stati definiti. # Gli altri oggetti non sono affetti dalla ridefinizione altra_auto = Automobile.new altra_auto.ispeziona # => Macchina a buon mercato -{: .code .ruby-code} ### Metodi Mancanti @@ -333,7 +320,6 @@ molte librerie. Ecco un esempio: __ :a, :b, 10 # => l metodo #{id} è inesistente - è stato chiamato # con i seguenti argomenti: a, b, 10 -{: .code .ruby-code} Questo esempio stampa i dettagli della chiamata, ma è possibile gestire il messaggio nel modo più appropriato, a seconda delle proprie esigenze. @@ -349,7 +335,6 @@ oggetto: 1.+(2) # che è lo stesso di 1.send "+", 2 -{: .code .ruby-code} ### I blocchi sono degli oggetti, ma non lo sanno ancora @@ -365,7 +350,6 @@ speciale, così: sommatore = blocco { |a, b| a + b } # sommatore è ora un oggetto Proc sommatore.class # => Proc -{: .code .ruby-code} È possibile anche creare dei blocchi fuori da chiamate a metodi, semplicemente chiamando Proc.new con un blocco o chiamando il metodo @@ -375,7 +359,6 @@ Allo stesso modo, anche i metodi sono pur sempre oggetti: method(:puts).call "puts è un oggetto!" # => puts è un oggetto! -{: .code .ruby-code} ### Gli operatori sono “zucchero sintattico” @@ -389,7 +372,6 @@ possibile, per esempio, ridefinire il metodo ”+” della classe Fixnum:     self - other   end end -{: .code .ruby-code} Non c’è nemmeno bisogno di usare `operator+`, come in C++. diff --git a/ko/about/index.md b/ko/about/index.md index 6da93f2764..7a6d5015bf 100644 --- a/ko/about/index.md +++ b/ko/about/index.md @@ -51,7 +51,6 @@ Gmane.](http://gmane.org/plot-rate.php?group=gmane.comp.lang.ruby.general&wi 코드로 대표되곤 한다. 5.times { print "우리는 루비를 *사랑*해요! 너무 멋져요!" } -{: .code .ruby-code} 많은 언어에서 숫자는 원시 타입이지 객체는 아니다. 하지만 루비는 스몰토크의 영향을 받아 모든 형태의 것에 메서드와 인스턴스 변수를 부여한다. 이는 모든 곳에서 일관되게 적용되므로 루비 사용법을 쉽게 해준다. @@ -73,7 +72,6 @@ Gmane.](http://gmane.org/plot-rate.php?group=gmane.comp.lang.ruby.general&wi y = 5.plus 6 # 이제 y는 11이 되었다 -{: .code .ruby-code} 루비의 연산자는 메서드를 이용한 문법 단축에 불과하다. 물론 이 부분도 재정의할 수 있다. @@ -90,7 +88,6 @@ Gmane.](http://gmane.org/plot-rate.php?group=gmane.comp.lang.ruby.general&wi   %w[Google Yahoo MSN].map do |engine|     "http://www." + engine.downcase + ".com"   end -{: .code .ruby-code} 위 예제에서 블럭은 `do ... end` 문법 구조에 기술되었다. `map` 메서드는 주어진 단어 리스트에 블럭을 적용한다. 이처럼 루비의 다른 메서드들도 그 동작 중 일부를 자신의 블럭으로 채워넣을 수 있도록 개발자에게 열린 구조를 제공하고 있다. @@ -106,7 +103,6 @@ Gmane.](http://gmane.org/plot-rate.php?group=gmane.comp.lang.ruby.general&wi class MyArray   include Enumerable end -{: .code .ruby-code} 대부분 루비스트들은 위와 같은 기능이 복잡하기만하고 제한적인 다중 상속보다 훨씬 간결한 방법이라고 보고 있다. diff --git a/ko/documentation/quickstart/2/index.md b/ko/documentation/quickstart/2/index.md index 197f3e7ae2..4013414fcf 100644 --- a/ko/documentation/quickstart/2/index.md +++ b/ko/documentation/quickstart/2/index.md @@ -10,7 +10,6 @@ lang: ko irb(main):011:1> puts "Hello World!" irb(main):012:1> end => nil -{: .code .ruby-code} “def h”가 바로 메서드의 정의를 시작한답니다. 루비에게 우리가 “h”란 이름의 메서드의 정의를 시작한다는 것을 알리는 것이죠. 그 다음줄은 메서드 바디(body)입니다. 마지막으로 “end”는 루비에게 메서드 정의가 끝났음을 알려줍니다. @@ -26,7 +25,6 @@ lang: ko irb(main):014:0> h() Hello World! => nil -{: .code .ruby-code} 생각보다 쉽지 않나요? 루비에서 메서드를 호출하는 것은 단지 메서드 이름을 입력하는 것에 지나지 않지요. 메서드가 인자를 받지 않는다면, 그걸로 충분하답니다. 빈 괄호를 입력해도 되지만, 필요한 것은 아니랍니다. @@ -41,7 +39,6 @@ lang: ko irb(main):018:0> h("Matz") Hello Matz! => nil -{: .code .ruby-code} 생각처럼 잘 동작되는군요. 조금 더 자세히 들여다 보도록 하지요. @@ -61,7 +58,6 @@ lang: ko irb(main):023:0> h Hello World! => nil -{: .code .ruby-code} 몇가지 눈의 띄는 것이 있을 겁니다. 첫째로 또 괄호를 사용하지 않고 있네요. 의도가 명백하다면 괄호는 단지 선택사항에 불과할 뿐이죠. 두번째로 디폴트 인자 “World”를 사용하고 있습니다. 즉 인자를 넘겨주지 않으면 “World”가 대신 사용되는 @@ -84,7 +80,6 @@ lang: ko irb(main):033:2> end irb(main):034:1> end => nil -{: .code .ruby-code} 새로운 키워드은 “class”가 나왔군요. 위에서는 새로운 “Greeter” 클래스와 여럿의 메서드가 정의되고 있습니다. 또한 ”@name”이 보이지요. 이는 객체 변수로써 모든 메서드에서는 접근이 가능하답니다. 보다시피 “say\_hi”와 diff --git a/ko/documentation/quickstart/3/index.md b/ko/documentation/quickstart/3/index.md index 31f5d6a32b..a6bee3e100 100644 --- a/ko/documentation/quickstart/3/index.md +++ b/ko/documentation/quickstart/3/index.md @@ -14,7 +14,6 @@ lang: ko irb(main):037:0> g.say_bye Bye Pat, come back soon. => nil -{: .code .ruby-code} “g” 객체가 만들어진 이후에는 “Pat”이란 이름을 기억합니다. 직접 이름을 접근할 수 있냐구요? @@ -22,7 +21,6 @@ lang: ko SyntaxError: compile error (irb):52: syntax error         from (irb):52 -{: .code .ruby-code} 보다시피 가능하지 않습니다. @@ -42,7 +40,6 @@ lang: ko     "clone", "public_methods", "respond_to?", "freeze",     "say_bye", "__id__", "=~", "methods", "nil?", "dup",     "instance_variables", "instance_of?"] -{: .code .ruby-code} 메서드가 상당히 많은 것을 알 수 있습니다. 우리가 정의한 메서드는 2개에 불과한데 어떻게 된 것일까요? 위의 리스트는 “Greeter” 클래스 자체의 메서드 뿐만 아니라 모든 부모 클래스의 메서드도 포함하고 있기 때문입니다. “false”를 인자로 @@ -50,7 +47,6 @@ lang: ko irb(main):040:0> Greeter.instance_methods(false) => ["say_bye", "say_hi"] -{: .code .ruby-code} 우리의 “Greeter” 객체가 어떤 메서드에 응답하는지를 개별적으로 확인하는 것도 가능합니다. @@ -60,7 +56,6 @@ lang: ko => true irb(main):043:0> g.respond_to?("to_s") => true -{: .code .ruby-code} 즉 “g” 객체는 “say\_hi”라는 이름의 메서드를 가지고 있고 “to\_s”라는 이름의 메서드도 가지고 있지만, “name”이란 이름의 메서드에 응답하지는 않습니다. @@ -74,7 +69,6 @@ lang: ko irb(main):045:1> attr_accessor :name irb(main):046:1> end => nil -{: .code .ruby-code} 루비에서는 클래스를 언제나 열어서 정의를 변경할 수 있습니다. 새로운 객체를 만들어서 ”@name”에 접근해봅시다. @@ -96,7 +90,6 @@ lang: ko irb(main):054:0> g.say_hi Hi Betty! => nil -{: .code .ruby-code} “attr\_accessor”은 두개의 메서드를 새로 정의하는데, “name”은 객체변수의 값에 접근하기 위해서이고 “name=”은 객체변수의 값을 변경하기 위해서입니다. @@ -169,7 +162,6 @@ IRB에서 빠져나오기 위해서는 “quit” 또는 “exit”이라고 입   mg.say_hi   mg.say_bye end -{: .code .ruby-code} 위의 파일을 “ri20min.rb”로 저장을 하고, “ruby ri20min.rb”라고 입력해서 실행을 시킵니다. 결과는 다음과 같아야 합니다. @@ -187,7 +179,6 @@ IRB에서 빠져나오기 위해서는 “quit” 또는 “exit”이라고 입 back soon! ... ... -{: .code .ruby-code} 이번 예제에는 새로운 내용들이 여럿 있으므로 [다음에서](/ko/documentation/quickstart/4/) 하나씩 자세히 살펴보도록 합시다. diff --git a/ko/documentation/quickstart/4/index.md b/ko/documentation/quickstart/4/index.md index 40700a9935..af1f88f1f2 100644 --- a/ko/documentation/quickstart/4/index.md +++ b/ko/documentation/quickstart/4/index.md @@ -23,7 +23,6 @@ lang: ko     puts "Hello #{@names}!"   end end -{: .code .ruby-code} “say\_hi” 메서드는 이제 ”@names” 인스턴스 변수의 내용을 확인하고 결정을 내립니다. 만약 ”@names”가 nil이라면, 세개의 점을 출력하게 되죠. 존재하지 않는 사람에게 인사를 할 필요는 없을테니 말입니다. @@ -38,7 +37,6 @@ nil이라면, 세개의 점을 출력하게 되죠. 존재하지 않는 사람 @names.each do |name|   puts "Hello #{name}!" end -{: .code .ruby-code} “each”는 코드 블록을 넘겨 받아서 리스트의 각 원소에 순차적으로 이를 적용시키는 메서드입니다. “do”와 “end” 사이의 코드가 바로 블록이지요. 블록은 “익명 함수” 또는 lambda와 유사하다고 볼 수 있습니다. 두개의 ”\|” 사이의 변수는 이 @@ -50,7 +48,6 @@ nil이라면, 세개의 점을 출력하게 되죠. 존재하지 않는 사람 대부분의 다른 프로그래밍 언어에서는 보통 for 반복문을 사용해서 리스트의 내용물을 처리하게 되지요. C 코드로는 다음과 같겠죠. for (i=0; i -{: .code .ruby-code} 물론 위의 코드는 잘 작동합니다. 하지만 그다지 고상하지는 않지요. 임시 변수인 “i”가 필요한데다가, 리스트의 길이가 얼마인지도 계산해야 하지요. 그리고 리스트의 내용물을 접근하는 코드도 작성해야 합니다. 루비의 방식이 훨씬 더 고상합니다. 핵심적이지 않은 @@ -73,7 +70,6 @@ nil이라면, 세개의 점을 출력하게 되죠. 존재하지 않는 사람     puts "Goodbye #{@names}. Come back soon!"   end end -{: .code .ruby-code} “say\_bye” 메서드는 “each” 메서드를 사용하지 않는군요. “say\_bye” 메서드는 단지 ”@names”가 “join” 메서드를 가졌는지 확인하고, 만약 그렇다면 사용하는군요. 그렇지 않다면, 변수를 단지 문자열로 출력합니다. 이 @@ -88,7 +84,6 @@ Typing)이라고 부릅니다. “만약 오리처럼 걷고 오리처럼 꽥꽥 한가지 더 있군요. 다음의 코드입니다. if __FILE__ == $0 -{: .code .ruby-code} “*FILE*“은 현재 파일의 이름이 저장되어 있는 특수한 변수입니다. ”$0”은 현재의 프로그램을 시작한 파일의 이름이 저장된 변수이죠. 이 코드는 “만약 현재의 파일이 메인 파일로 사용된 것이라면...”을 확인해주고 있습니다. 이것은 이 파일이 diff --git a/ko/documentation/quickstart/index.md b/ko/documentation/quickstart/index.md index 2e3c7cc098..26f5606315 100644 --- a/ko/documentation/quickstart/index.md +++ b/ko/documentation/quickstart/index.md @@ -19,13 +19,11 @@ irb를 시작하십시오. ^ irb(main):001:0> -{: .code .ruby-code} 이제 irb 프롬프트에 “Hello World”라고 입력해 봅니다. irb(main):001:0> "Hello World" => "Hello World" -{: .code .ruby-code} ## 당신의 첫 루비 코드가 실행되었습니다! @@ -35,7 +33,6 @@ irb를 시작하십시오. irb(main):002:0> puts "Hello World" Hello World => nil -{: .code .ruby-code} puts는 루비에서 출력을 할때 주로 사용하는 명령어입니다. ”=> nil” 부분은 무엇일까요? 바루 우리가 입력한 루비 코드가 리턴한 값이랍니다. puts 명령어는 언제나 nil을 리턴합니다. nil은 무(無)를 의미하는데, 즉 리턴하는 값이 없음을 @@ -47,26 +44,22 @@ irb는 계산기로 쓰기에도 무척 유용합니다. irb(main):003:0> 3+2 => 5 -{: .code .ruby-code} 3 더하기 2. 무척 쉽지요. 3 곱하기 2는 어떨까요? 다시 입력하는 대신에 위쪽 화살표키를 눌러보세요. 아마도 “3+2”가 나올겁니다. 화살표키로 커서를 움직여서 ”+”를 “`*`“로 바꾸어 보세요. irb(main):004:0> 3*2 => 6 -{: .code .ruby-code} 이번에는 3의 제곱을 계산해보죠. irb(main):005:0> 3**2 => 9 -{: .code .ruby-code} 루비에서 “`**`“는 거듭제곱을 뜻합니다. 제곱근은 어떻게 구할까요? irb(main):006:0> Math.sqrt(9) => 3.0 -{: .code .ruby-code} 무언가 새로운게 나왔군요. 뭐, 9의 제곱근은 잘 계산되었지만 말입니다. 우선 “Math”가 무엇인지 부터 보도록 하지요. @@ -91,7 +84,6 @@ irb는 계산기로 쓰기에도 무척 유용합니다. => 16 irb(main):009:0> Math.sqrt(a+b) => 5.0 -{: .code .ruby-code} 이는 계산기로도 유용하겠지만, 이제 다시 [Hello World 프로그램](/ko/documentation/quickstart/2/)으로 돌아가 보겠습니다. diff --git a/pl/about/index.md b/pl/about/index.md index 2d0d39ef16..b9e2d84026 100644 --- a/pl/about/index.md +++ b/pl/about/index.md @@ -64,7 +64,6 @@ obiektowe podejście Rubiego jest zazwyczaj demonstrowane przy użyciu fragmentu kodu, który wywołuje czynność na liczbie. 5.times { print "We *love* Ruby -- it's outrageous!" } -{: .code .ruby-code} W wielu językach, liczby i inne typy podstawowe nie są obiektami. Ruby podąża za Smalltalkiem udostępniając metody i zmienne instancji @@ -91,7 +90,6 @@ stosowną metodę do klasy `Numeric`. y = 5.plus 6 # y wynosi teraz 11 -{: .code .ruby-code} Operatory Rubiego są [lukrem składniowym][2] dla metod, metody również możesz przedefiniować. @@ -112,7 +110,6 @@ Lispa[4](#fn4).”   %w[Google Yahoo MSN].map do |engine|     "http://www." + engine.downcase + ".com"   end -{: .code .ruby-code} W powyższym kodzie, blok jest opisany pomiędzy słowami `do ... end`. Metoda `map` aplikuje zadany blok do podanej listy słów (Google Yahoo @@ -134,7 +131,6 @@ metod, które wykorzystują metodę `each` do iterowania po elementach. class MyArray   include Enumerable end -{: .code .ruby-code} Programiści języka Ruby uznają tą technikę za prostszą niż wielokrotne dziedziczenie—które może być skomplikowane i nakłada wiele ograniczeń. diff --git a/pl/documentation/ruby-a-inne-jezyki-programowania/index.md b/pl/documentation/ruby-a-inne-jezyki-programowania/index.md index 843a53233b..5aa8217c94 100644 --- a/pl/documentation/ruby-a-inne-jezyki-programowania/index.md +++ b/pl/documentation/ruby-a-inne-jezyki-programowania/index.md @@ -39,7 +39,6 @@ i in lista: ...), w Rubim zobaczysz:   # Jesteśmy w bloku.   # Tutaj zajmujemy się element-em. end -{: .code .ruby-code} Aby dowiedzieć się więcej o `each` (oraz pokrewnych: `collect`, `find`, `inject`, `sort`, itd), rzuć okiem na `ri Enumerable` (a potem ri @@ -53,7 +52,6 @@ wartość, nawet jeśli ta wartość jest **nil**. x = 10 y = 11 z = if x true -{: .code .ruby-code} ### Symbole nie są “lekkimi stringami” @@ -69,7 +67,6 @@ Spójrz na ten przykład: irb(main):002:0> "george".object_id == "george".object_id => false irb(main):003:0> -{: .code .ruby-code} Metoda `object_id` zwraca unikalny identyfikator obiektu w pamięci. Jeśli dwa obiekty mają ten sam `object_id`, to są tym samym obiektem @@ -100,7 +97,6 @@ obiektach: MyClass = Class.new do   attr_accessor :instance_var end -{: .code .ruby-code} ### Stałe (zmienne) @@ -124,7 +120,6 @@ pewnego zamieszania, jak widać poniżej: def Constant   11 end -{: .code .ruby-code} Teraz `Constant` ma wartość 10, ale `Constant()` daje wartość 11. @@ -139,7 +134,6 @@ Rails używa tego na każdym kroku: end some_keyword_params( :param_one => 10, :param_two => 42 ) # => {:param_one=>10, :param_two=>42} -{: .code .ruby-code} ### Prawda absolutna @@ -153,7 +147,6 @@ poniższy kod w Pythonie:   print "0 is true" else:   print "0 is false" -{: .code .ruby-code} Ten kawałek kodu wypisze 0 is false To samo w Rubim wygląda tak: @@ -164,7 +157,6 @@ tak: else   puts "0 is false" end -{: .code .ruby-code} Wypisze “0 is true”. @@ -177,7 +169,6 @@ W poniższym kodzie,   def a_method; true; end   def another_method; false; end end -{: .code .ruby-code} Być może oczekujesz, że `another_method` jest metodą publiczną? Nie jest. Modyfikator dostępu ‘private’ jest zastosowany dla wszystkich @@ -193,7 +184,6 @@ modyfikatora zakresu dostępu. Domyślnie, wszystkie metody są publiczne.   # another_method jest metodą prywatną   def another_method; false; end end -{: .code .ruby-code} `public`, `private` and `protected` to tak naprawdę metody, mogą więc przyjmowac paramatery. Jeśli tym metodom przekażesz Symbol jako parametr, zmienisz widoczność danej metody. ### Dostęp do metod @@ -246,7 +236,6 @@ Jedynie **self** jest dozwolonym odbiorcą wywołań prywatnych metod.         from (irb):25         from :0 irb(main):026:0> -{: .code .ruby-code} ### Klasy są otwarte @@ -266,7 +255,6 @@ klasie `Fixnum`. Poniżej: # 14 hours from 00:00 January 1st # (czyt. kiedy w końcu się obudzisz ;) Time.mktime(2006, 01, 01) + 14.hours # => Sun Jan 01 14:00:00 -{: .code .ruby-code} ### Śmieszne nazwy metod @@ -304,7 +292,6 @@ dla danego obiektu. # Inne obiekty nie zostały zmienione other_car = Car.new other_car.inspect # => Tani samochód -{: .code .ruby-code} ### Brakujące metody @@ -324,7 +311,6 @@ Twojej aplikacji, wiele bibliotek tak robi. Poniżej jeden z przykładów: __ :a, :b, 10 # => Wywołano niezdefiniowaną metodę __. Przekazano poniższe # argumenty: a, b, 10 -{: .code .ruby-code} Powyższy kod wyświetla po prostu szczegóły wywołania, możesz to zachowanie dowolnie zmienić. @@ -340,7 +326,6 @@ obiektowi: 1.+(2) # Jest to to samo co: 1.send "+", 2 -{: .code .ruby-code} ### Bloki są Obiektami, tylko o tym jeszcze nie wiedzą @@ -356,7 +341,6 @@ tak jak w poniższym przykładzie: adder = block { |a, b| a + b } # adder to teraz obiekt typu Proc adder.class # => Proc -{: .code .ruby-code} Możesz tworzyć bloki równiez poza wywołaniami metod, wywołując Proc.new lub metodę `lambda`. @@ -365,7 +349,6 @@ Podobnie, metody to także obiekty: method(:puts).call "puts to obiekt!" # => puts to obiekt! -{: .code .ruby-code} ### Operatory to cukier syntaktyczny @@ -378,7 +361,6 @@ wywołań metod. Możesz, na przykład, nadpisać metodę + klasy Fixnum:     self - other   end end -{: .code .ruby-code} Nie potrzebujesz operatora z C++’s `operator+`, etc. diff --git a/pl/documentation/ruby-w-20-minut/2/index.md b/pl/documentation/ruby-w-20-minut/2/index.md index e3760ce9ed..85c85ffaa9 100644 --- a/pl/documentation/ruby-w-20-minut/2/index.md +++ b/pl/documentation/ruby-w-20-minut/2/index.md @@ -11,7 +11,6 @@ zmęczyły ? Musimy zdefiniować metodę! irb(main):011:1> puts "Hello World!" irb(main):012:1> end => nil -{: .code .ruby-code} Kod `def h` rozpoczyna definicję metody. Wskazuje Rubiemu, że definiujemy metodę, która nazywa się `h`. Następna linia to ciało @@ -30,7 +29,6 @@ Teraz wypróbujmy uruchomić tę metodę kilka razy: irb(main):014:0> h() Hello World! => nil -{: .code .ruby-code} No cóż, to było proste. Wywołanie metody w Rubim sprowadza się do napisania jej nazwy. Jeśli metoda nie przyjmuje żadnych parametrów, to @@ -48,7 +46,6 @@ parametr. irb(main):018:0> h("Matz") Hello Matz! => nil -{: .code .ruby-code} Działa … ale spójrzmy bliżej na to co się tutaj dzieje. @@ -70,7 +67,6 @@ drukowane z dużej litery: irb(main):023:0> h Hello World! => nil -{: .code .ruby-code} Warto zwrócić tutaj uwagę na kilka innych sztuczek. Jedną z nich jest to, że wywołujemy metodę bez nawiasów. Jeśli to co robisz jest @@ -96,7 +92,6 @@ celu użyjemy obiektu. Stwórzmy klasę “Greeter”. irb(main):033:2> end irb(main):034:1> end => nil -{: .code .ruby-code} Nowym słowem kluczowym jest tutaj `class`. Definiuje ono nową klasę nazwaną Greeter oraz kilka metod tej klasy. Zauważ również `@name`. Jest diff --git a/pl/documentation/ruby-w-20-minut/3/index.md b/pl/documentation/ruby-w-20-minut/3/index.md index 974df472a0..c9de58d07b 100644 --- a/pl/documentation/ruby-w-20-minut/3/index.md +++ b/pl/documentation/ruby-w-20-minut/3/index.md @@ -14,7 +14,6 @@ Utwórzmy teraz obiekt klasy Greeter: irb(main):037:0> g.say_bye Bye Pat, come back soon. => nil -{: .code .ruby-code} Gdy obiekt `g` jest utworzony, zapamiętuje on imię jako Pat. Hmm, co jeśli chcielibyśmy dostać się bezpośrednio do imienia ? @@ -23,7 +22,6 @@ jeśli chcielibyśmy dostać się bezpośrednio do imienia ? SyntaxError: compile error (irb):52: syntax error         from (irb):52 -{: .code .ruby-code} Niestety, nie możemy tak zrobić. @@ -47,7 +45,6 @@ Więc jakie to metody istnieją dla obiektów klasy Greeter?     "clone", "public_methods", "respond_to?", "freeze",     "say_bye", "__id__", "=~", "methods", "nil?", "dup",     "instance_variables", "instance_of?"] -{: .code .ruby-code} Dużo metod. My zdefiniowaliśmy tylko dwie metody. Co tutaj się dzieje? No coż, to są **wszystkie** metody obiektów klas Greeter, kompletna @@ -58,7 +55,6 @@ nadrzędnych poprzez przekazanie parametru `false`. irb(main):040:0> Greeter.instance_methods(false) => ["say_bye", "say_hi"] -{: .code .ruby-code} Zobaczmy więc, na jakie metody nasz obiekt odpowiada (responds\_to): @@ -68,7 +64,6 @@ Zobaczmy więc, na jakie metody nasz obiekt odpowiada (responds\_to): => true irb(main):043:0> g.respond_to?("to_s") => true -{: .code .ruby-code} Rozumie więc `say_hi`, oraz `to_s` (oznaczającą zamienienie czegoś w stringa, metoda która jest zdefiniowana domyślnie dla każdego obiektu), @@ -83,7 +78,6 @@ nam łatwy dostępn do zmiennych obiektu. irb(main):045:1> attr_accessor :name irb(main):046:1> end => nil -{: .code .ruby-code} W Rubim możesz ponownie otworzyć klasę i zmodyfikować ją. To nie zmienia żadnych obiektów, które juz isnieją, ale zmienia obiekty, które dopiero @@ -108,7 +102,6 @@ powstaną. Utwórzmy więc nowy obiekt i pobawmy się jego właściwością irb(main):054:0> g.say_hi Hi Betty! => nil -{: .code .ruby-code} Użycie `attr_accessor` zdefiniowało dwie nowe metody dla nas, `name` aby odczytać wartość oraz `name=` aby ją ustawić. @@ -186,7 +179,6 @@ Control-D.   mg.say_hi   mg.say_bye end -{: .code .ruby-code} Zapisz ten plik pod nazwą “ri20min.rb”, i uruchom go wpisując “ruby ri20min.rb”. Wynik poniżej: diff --git a/pl/documentation/ruby-w-20-minut/4/index.md b/pl/documentation/ruby-w-20-minut/4/index.md index d9aa816ec2..3282277d78 100644 --- a/pl/documentation/ruby-w-20-minut/4/index.md +++ b/pl/documentation/ruby-w-20-minut/4/index.md @@ -26,7 +26,6 @@ Nasza metoda `say_hi` stała się trochę bardziej skomplikowana:     puts "Hello #{@names}!"   end end -{: .code .ruby-code} Metoda ta sprawdza teraz parametr `@names` i jeśli wynosi on nil to wyświetla trzy kropki. Nie ma sensu witać kogoś kogo nie ma, prawda ? @@ -43,7 +42,6 @@ Przyjrzyjmy się bliżej iteratorowi: @names.each do |name|   puts "Hello #{name}!" end -{: .code .ruby-code} `each` jest metodą, która przyjmuje blok kodu i wywołuje ten blok kodu dla każdego elementu na liście. Kod pomiędzy `do` oraz `end` jest @@ -58,7 +56,6 @@ Większość innych języków programowania obsługuje iterację po elementach listy za pomocą pętli `for`, w C wygląda to mniej więcej tak: for (i=0; i -{: .code .ruby-code} To działą, ale nie jest zbyt eleganckie. Potrzebujesz tu tymczasowej zmiennej do przechowania rozmiaru listy `i` oraz musisz opisać jak @@ -86,7 +83,6 @@ zakończenie i błędy – wszystko ukryte przed użytkownikiem twoich metod.     puts "Goodbye #{@names}. Come back soon!"   end end -{: .code .ruby-code} Metoda `say_bye` nie korzysta z `each`, zamiast tego sprawdza czy `@names` odpowiada na wywołanie metody `join`, jeśli tak, to uzywa tej @@ -107,7 +103,6 @@ Więc, oto jest klasa MegaGreeter , reszta pliku po prostu wywołuje metody z tej klasy. Zwróćmy uwagę jeszcze na ostatni trik, to linia: if __FILE__ == $0 -{: .code .ruby-code} `__FILE__` jest magiczną zmienną która zawiera nazwę obecnie używanego pliku. `$0` jest nazwą pliku użytego do uruchomienia programu. To diff --git a/pl/documentation/ruby-w-20-minut/index.md b/pl/documentation/ruby-w-20-minut/index.md index bd8026d030..74638b3a99 100644 --- a/pl/documentation/ruby-w-20-minut/index.md +++ b/pl/documentation/ruby-w-20-minut/index.md @@ -24,7 +24,6 @@ Otwórz IRB’a. ^ irb(main):001:0> -{: .code .ruby-code} Ok, udało się otworzyć IRB’a. Co teraz? @@ -32,7 +31,6 @@ Wpisz: `"Hello World"` irb(main):001:0> "Hello World" => "Hello World" -{: .code .ruby-code} ## Ruby Wykonał Polecenie! @@ -44,7 +42,6 @@ wyświetlić “Hello World” potrzebujemy troszkę więcej: irb(main):002:0> puts "Hello World" Hello World => nil -{: .code .ruby-code} `puts` jest poleceniem, które ogólnie rzecz biorąc wyświetla różne rzeczy w Rubim. A co oznacza `=> nil` ? To wynik wyrażenia. `puts` @@ -58,7 +55,6 @@ kalkulatora: irb(main):003:0> 3+2 => 5 -{: .code .ruby-code} Trzy plus dwa. Wystarczająco proste. Co z “trzy razy dwa” (three times two)? Możesz to napisać, jest to wciąż bardzo krótkie, ale możesz też @@ -70,20 +66,17 @@ i zamienić plus na `*`. irb(main):004:0> 3*2 => 6 -{: .code .ruby-code} Następnie, wypróbujmy potęgowania: irb(main):005:0> 3**2 => 9 -{: .code .ruby-code} W Rubim `**` jest sposobem zapisu potęgowania. Co jeśli chciałbyś pójść odwrotną drogą i obliczyć pierwiastek kwadratowy danej liczby ? irb(main):006:0> Math.sqrt(9) => 3.0 -{: .code .ruby-code} Co przedsatwia powyższa linia ? Tak, zgadza się, obliczamy tutaj pierwiastek kwadratowy liczby 9. Przypatrzmy się temu bliżej. Po @@ -115,7 +108,6 @@ wynik do zmiennej. => 16 irb(main):009:0> Math.sqrt(a+b) => 5.0 -{: .code .ruby-code} Odbiegamy tutaj jednak od tradycyjnego programu “Hello World” , na którym tutoriale dla początkujących powinny się skupiać więc [wróćmy do diff --git a/tr/about/index.md b/tr/about/index.md index 7fd5c021b8..b757007c98 100644 --- a/tr/about/index.md +++ b/tr/about/index.md @@ -66,7 +66,6 @@ Ruby’nin yüzde yüz saf nesneye yönelik bir dil olduğunun en iyi ispatı bir kod parçası ile bir sayıya olay vererek yapılır: 5.times { print "Ruby'ti *seviyoruz* -- harika bir dil!" } -{: .code .ruby-code} Çoğu dilde sayılar ve diğer ilkel tipler nesne değildir. Ruby tüm tiplerine metotlar ve örnek değişkenler verme geleneğini Smalltalk’tan @@ -92,7 +91,6 @@ ekleyebilirsiniz. y = 5.topla 6 # y'nin değeri 11 oldu. -{: .code .ruby-code} Ruby’nin operatörleri sözdizimsel olarak esnektir, yeniden tanımlamanıza olanak sağlar. @@ -114,7 +112,6 @@ istedim[4](#fn4).” demiştir.   %w[Google Yahoo MSN].map do |engine|     "http://www." + engine.downcase + ".com"   end -{: .code .ruby-code} Yukarıdaki kodda bir blok `do ... end` yapıları içerisinde tanımlanıyor. `map` metodu bloğa bir kelime listesi ile çalıştığını bildiriyor. @@ -136,7 +133,6 @@ almış olur. Örneğin `each` metodunu gerçekleştiren her sınıf class MyArray   include Enumerable end -{: .code .ruby-code} Genelde Ruby’ciler bu yolu bazen çok karmaşıklaşan ve kısıtlayıcı olan çoklu mirastan daha temiz ve sağlam bir yöntem olarak görürler. diff --git a/tr/documentation/quickstart/2/index.md b/tr/documentation/quickstart/2/index.md index bc678c29b4..36dd581417 100644 --- a/tr/documentation/quickstart/2/index.md +++ b/tr/documentation/quickstart/2/index.md @@ -11,7 +11,6 @@ metod tanımlamamız gerekiyor! irb(main):011:1> puts "Hello World!" irb(main):012:1> end => nil -{: .code .ruby-code} `def h` kodu ile metod tanımlaması başlar. Bu Ruby’ye adı `h` olan bir metod tanıtımı (definition) başlattığımızı bildirir. Sonraki satır @@ -30,7 +29,6 @@ belirtir. irb(main):014:0> h() Hello World! => nil -{: .code .ruby-code} Pekala, bu kolaydı. Ruby’de metodları çağırmak için adlarını Ruby’ye söylemek yeterli. Eğer metod bir parametre almıyorsa tüm yapmanız @@ -47,7 +45,6 @@ Eğer dünyaya değil de bir kişiye merhaba demek istersek ne olacak? Hemen irb(main):018:0> h("Matz") Hello Matz! => nil -{: .code .ruby-code} Çalıştığını gördükten sonra neler olduğunu tekrar bir inceleyelim. @@ -68,7 +65,6 @@ olduğundan emin olmak için kullanabilirsiniz: irb(main):023:0> h Hello World! => nil -{: .code .ruby-code} Burda birkaç diğer şekil görünüyor. Biri metodu parantez kullanmadan çağırıyoruz. Parantezler keyfe bağlı kullanılır görsel olarak isterseniz @@ -94,7 +90,6 @@ isteyebilirsiniz. Bir “Greeter” sınıfı oluşturalım. irb(main):033:2> end irb(main):034:1> end => nil -{: .code .ruby-code} Buradaki yeni kelime `class`. Bu Greeter adı verilen bir nesne ve içinde birkaç metod tanımlar. Ayrıca dikkat ederseniz `@name` bu sınıfın bir diff --git a/tr/documentation/quickstart/3/index.md b/tr/documentation/quickstart/3/index.md index 206780d9ae..7767c78cae 100644 --- a/tr/documentation/quickstart/3/index.md +++ b/tr/documentation/quickstart/3/index.md @@ -14,7 +14,6 @@ lang: tr irb(main):037:0> g.say_bye Bye Pat, come back soon. => nil -{: .code .ruby-code} Birkez `g` nesnesi üretildimi, ismin Pat olduğunu hep hatırlayacaktır. Hımm, peki ismi direk olarak almak istersek nolcak? @@ -23,7 +22,6 @@ Hımm, peki ismi direk olarak almak istersek nolcak? SyntaxError: compile error (irb):52: syntax error         from (irb):52 -{: .code .ruby-code} Yok, yapamadık. @@ -47,7 +45,6 @@ Pekala Greeter nesnesinin ne metodları mevcut?     "clone", "public_methods", "respond_to?", "freeze",     "say_bye", "__id__", "=~", "methods", "nil?", "dup",     "instance_variables", "instance_of?"] -{: .code .ruby-code} Waw, bir sürü metod varmış. Biz sadece iki metod tanımladık. Burda neler oluyor? Pekala bunlar Greeter nesnesinin tüm metodları, kalıtımdan @@ -57,7 +54,6 @@ anlamı kalıtımsal metodları istemediğimizdir. irb(main):040:0> Greeter.instance_methods(false) => ["say_bye", "say_hi"] -{: .code .ruby-code} Ah, şimdi daha iyi. Haydi şimdide selamlayıcı nesnemizin hangi metodlara cevap veriyor bulalım: @@ -68,7 +64,6 @@ cevap veriyor bulalım: => true irb(main):043:0> g.respond_to?("to_s") => true -{: .code .ruby-code} Gördüğünüz gibi `say_hi` ve `to_s` (birşeyi stringe çevirme emridir) kelimelerinin anlamını biliyor, fakat `name` anlamını bilmiyor. @@ -82,7 +77,6 @@ nesnenin değişkenlerine erişmek için kolay bir yol sunar. irb(main):045:1> attr_accessor :name irb(main):046:1> end => nil -{: .code .ruby-code} Ruby’de, sınıfı tekrar açıp değiştirebilirsiniz. Yapılan değişiklikler yeni üretilecek nesnelerde etkili olacağı gibi üretilmiş nesnelerde de @@ -107,7 +101,6 @@ biraz oynayalım. irb(main):054:0> g.say_hi Hi Betty! => nil -{: .code .ruby-code} `attr_accessor` kullanarak iki yeni metod tanımlanmış olur, değeri okumak için `name` ve değeri değiştirmek için `name=` metodları. @@ -184,7 +177,6 @@ IRB’den çıkmak için “quit”, “exit” yazın ya da sadece Control-D ba   mg.say_hi   mg.say_bye end -{: .code .ruby-code} Bu dosyayı “ri20min.rb” olarak kaydedin ve “ruby ri20min.rb” konsol komutuyla çalıştırın. Çıktısı şöyle olmalı: diff --git a/tr/documentation/quickstart/4/index.md b/tr/documentation/quickstart/4/index.md index 9ef1648c0f..ea1813c1a4 100644 --- a/tr/documentation/quickstart/4/index.md +++ b/tr/documentation/quickstart/4/index.md @@ -26,7 +26,6 @@ Bizim `say_hi` metodunda biraz kurnazlıklar mevcut:     puts "Hello #{@names}!"   end end -{: .code .ruby-code} Bu betik nasıl cevap vereceğine karar vermek için `@names` değişkenine bakıyor. Eğer değişken boşsa üç nokta koyuyor, selamlanacak kimse yoksa @@ -45,7 +44,6 @@ Haydi bu yineleyiciyi daha yakından inceleyelim: @names.each do |name|   puts "Hello #{name}!" end -{: .code .ruby-code} `each` metodu arkasından gelen kod bloğunu listenin her elemanı için çalıştırır. `do` ve `end` arasında kod bloğu yer alır. Liste elemanları @@ -60,7 +58,6 @@ Birçok diğer programlama dilinde bir liste `for` döngüsü ile işlenir, C’de şuna benzer bir kod olur: for (i=0; i -{: .code .ruby-code} Bu kod çalışıyor ama şık bir görüntüsü yok. `i` gibi bir değişken üretmek zorundasınız, listenin uzunluğunu bulmak zorundasınız ve liste @@ -91,7 +88,6 @@ from the cares of the user.     puts "Goodbye #{@names}. Come back soon!"   end end -{: .code .ruby-code} `say_bye` metodu `each` kullanmaz onun yerine `@names` değişeninin `join` metoduna cevap vermesini sınar ve kullanır. Diğer durumda liste @@ -108,7 +104,6 @@ sınıfın kullanılmasından ibaret. Dikkatinizi çekecek son bir nokta kaldı, o da şu: if __FILE__ == $0 -{: .code .ruby-code} `__FILE__` sihirli bir değişkendir ve bulunduğu dosyanın ismini içerir. `$0` ise bu programı çağıran dosyanın ismini içerir. Buradaki koşul ile diff --git a/tr/documentation/quickstart/index.md b/tr/documentation/quickstart/index.md index cfb0527177..53a69660d0 100644 --- a/tr/documentation/quickstart/index.md +++ b/tr/documentation/quickstart/index.md @@ -28,7 +28,6 @@ IRB’i açın (Interactive Ruby anlamına gelir). ^ irb(main):001:0> -{: .code .ruby-code} Tamam açıldı şimdi ne yapacağız? @@ -36,7 +35,6 @@ Tamam açıldı şimdi ne yapacağız? irb(main):001:0> "Hello World" => "Hello World" -{: .code .ruby-code} ## Ruby Size İtaat Eder! @@ -48,7 +46,6 @@ fazla birşeyler yapmalıyız: irb(main):002:0> puts "Hello World" Hello World => nil -{: .code .ruby-code} `puts` Ruby’de çıktı almak için en basit bir komut. Fakat bu `=> nil` ne oluyor ki? Bu işlevin sonucudur. `puts` herzaman Ruby’de hiçbirşeyi @@ -60,7 +57,6 @@ IRB basit bir hesap makinası olarak kullanılabilir: irb(main):003:0> 3+2 => 5 -{: .code .ruby-code} Üç artı iki. Çok kolay. Peki üç *kere* iki nedir? Bunu girebileceğiniz gibi bir önce girdiğiniz satırı yukarı tuşuna basarak tekrar @@ -69,20 +65,17 @@ gibi bir önce girdiğiniz satırı yukarı tuşuna basarak tekrar irb(main):004:0> 3*2 => 6 -{: .code .ruby-code} Sonra üçün karesini bulalım: irb(main):005:0> 3**2 => 9 -{: .code .ruby-code} Ruby’de `**` “üssü” demenin yoludur. Fakat bir sayının karekökü için ne yapmalı? irb(main):006:0> Math.sqrt(9) => 3.0 -{: .code .ruby-code} Tamam, bu ne demek sizce? Tahmin ederseniz dokuzun karekökü alınmış. Haklısınız fakat daha yakından inceleyelim, en başta bu `Math` ne ? @@ -110,7 +103,6 @@ bir değişkene atama yaparız. irb(main):008:0> b = 4 ** 2 => 16 irb(main):009:0> Math.sqrt(a+b) => 5.0 -{: .code .ruby-code} Bir hsap makinası için oldukça yeterli. Klasik `Hello World` mesajından uzaklaşmaya başladık, [geri dönelim.](2/) diff --git a/tr/documentation/ruby-from-other-languages/index.md b/tr/documentation/ruby-from-other-languages/index.md index bb7994add5..c3c38282c2 100644 --- a/tr/documentation/ruby-from-other-languages/index.md +++ b/tr/documentation/ruby-from-other-languages/index.md @@ -44,7 +44,6 @@ görürsünüz:   # Burası blok içi.   # this_item ile çalışan kodlar buradadır. end -{: .code .ruby-code} `each` (ve arkadaşları `collect`, `find`, `inject`, `sort`, vs.) hakkında daha fazla bilgi için komut satırında `ri Enumerable` (ve @@ -58,7 +57,6 @@ olsa bir değer geri döner. Şu mümkündür: x = 10 y = 11 z = if x true -{: .code .ruby-code} ### Semboller Sıradan Stringler Değildir @@ -74,7 +72,6 @@ girin ve farkı görelim: irb(main):002:0> "george".object_id == "george".object_id => false irb(main):003:0> -{: .code .ruby-code} `object_id` metodu bir nesnenin tanımlama kodunu geri döner. Eğer iki nesne birbirine eşitse `object_id` leri de eşit olacaktır. Bunun anlamı ikisi de hafıza da aynı yeri işaret ediyor demektir. Gördüğünüz gibi bir sembol ilk defa kullanıldıktan sonra aynı karakterler her zaman hafızada aynı yeri gösterir. Yani `object_id`leri @@ -101,7 +98,6 @@ yaptığınız herşeyi onlarla da yapabilirsiniz: MyClass = Class.new do   attr_accessor :instance_var end -{: .code .ruby-code} ### Değişken Sabitler @@ -123,7 +119,6 @@ karışıklığa sebep olabilir: def Constant   11 end -{: .code .ruby-code} Burada `Constant` 10 değerindeyken `Constant()` değeri 11 dir. @@ -138,7 +133,6 @@ yerine hash ve semboller kullanarak taklidi yapılır. Ruby on Rails’de end some_keyword_params( :param_one => 10, :param_two => 42 ) # => {:param_one=>10, :param_two=>42} -{: .code .ruby-code} ### Evrensel Doğruluk @@ -152,7 +146,6 @@ yanlış kabul edilir. Aşağıdaki Python koduna bakın (diğer dillere de   print "0 is true" else:   print "0 is false" -{: .code .ruby-code} Bunu çıktısı “0 is false” olacaktır. Ruby karşılığı ise: @@ -162,7 +155,6 @@ Bunu çıktısı “0 is false” olacaktır. Ruby karşılığı ise: else   puts "0 is false" end -{: .code .ruby-code} “0 is true” çıktısı verecektir. @@ -175,7 +167,6 @@ Aşağıdaki Ruby kodunda,   def bir_metod; true; end   def diger_metod; false; end end -{: .code .ruby-code} `diger_metod` erişiminin genel olacağını düşünebilirsiniz ama öyle değil. “privete” erişim belirleyici sınıf tanımı sonuna kadar veya başka bir erişim belirleyici satıra kadar geçerli olacaktır. Default olarak tüm metodlar “public”(genel erişim)dir: class MyClass   # Şimdi a_method public erişim @@ -186,7 +177,6 @@ Aşağıdaki Ruby kodunda,   # another_method private erişim   def another_method; false; end end -{: .code .ruby-code} `public`, `private` ve `protected` aslında metoddur ve bu yüzden parametre alabilirler. Eğer bunlara bir sembol gönderirseniz metodun görünrlüğü değişir. ### Metod Erişimleri @@ -238,7 +228,6 @@ erişilebileceğini belirtir ve bu alıcı sadece **self** olabilir.         from (irb):25         from :0 irb(main):026:0> -{: .code .ruby-code} ### Sınıflar Açıktır @@ -257,7 +246,6 @@ zamanla ilgili bir kısım metod eklemiştir. İzleyin: # 1 Ocak saat 00:00 dan itibaren 14 saat sonra # anca uyanmışsınız ;) Time.mktime(2011, 01, 01) + 14.hours # => Sat Jan 01 14:00:00 -{: .code .ruby-code} ### Eğlenceli Metod İsimleri @@ -293,7 +281,6 @@ tanımlandıysa onun için geçerlidir. # Diğer nesneler etkilenmez other_car = Car.new other_car.inspect # => Ucuz araba -{: .code .ruby-code} ### Kayıp Metodlar @@ -313,7 +300,6 @@ yapar. Bir örnek: __ :a, :b, 10 # => Metod __ çağrıldı fakat bulunamadı. Argümanları # şunlar: a, b, 10 -{: .code .ruby-code} Yukardaki kod sadece çağrının detaylarını çağırır, fakat siz bu mesajı istediğiniz gibi değiştirmekte serbestsiniz. @@ -328,7 +314,6 @@ Bir metod çağrısı aslında diğer bir nesneye bir **mesaj** dır: 1.+(2) # Bu da aynıdır: 1.send "+", 2 -{: .code .ruby-code} ### Bloklar Nesnedir, Sadece Henüz Bunu Bilmiyorlar @@ -344,7 +329,6 @@ argüman listesinde özel bir argüman ekleyerek `Proc` da yapabilirsiniz. adder = block { |a, b| a + b } # burada adder şimdi bir Proc nesnesidir adder.class # => Proc -{: .code .ruby-code} Blokları metod çağrıları dışında da Proc.new ile veya `lambda` metodu ile üretebilirsiniz @@ -353,7 +337,6 @@ Benzer olarak metodlar da birer nesnedir: method(:puts).call "puts is an object!" # => puts is an object! -{: .code .ruby-code} ### Operatörler de Deyimdir @@ -366,7 +349,6 @@ Bu yüzden isterseniz Fixnum’un + metodunu değiştirebilirsiniz:     self - other   end end -{: .code .ruby-code} C++’ın `operator+` sına ihtiyacınız yok. diff --git a/zh_TW/about/index.md b/zh_TW/about/index.md index 4c42f33d9a..f725a60131 100644 --- a/zh_TW/about/index.md +++ b/zh_TW/about/index.md @@ -51,7 +51,6 @@ scripting language \[3\]”. 這特點來看,可以證明 Ruby 是個純物件導向的語言。 5.times { print "We *love* Ruby -- it's outrageous!" } -{: .code .ruby-code} 在許多的語言中,數字與其他的原生資料型態(primitive types) 都不是物件。 而 Ruby 受到了 Smalltalk 語言讓所有的資料型態都可賦予方法與產生實體變數的影響。更進而讓這規則適用於 Ruby 中所有物件。 @@ -72,7 +71,6 @@ Ruby 是個相當具有彈性的語言, 它可以讓使用者自由的去改 y = 5.plus 6 # y is now equal to 11 -{: .code .ruby-code} Ruby 的運算元其實就是個方法(method)\[4\]。你也可以重新定義運算元。 @@ -89,7 +87,6 @@ Block 的靈感是由函數式程式設計語言而來。Matz 說到:”在 Ru   %w[Google Yahoo MSN].map do |engine|     "http://www." + engine.downcase + ".com"   end -{: .code .ruby-code} 在上方的程式碼中,block 是在 `do ... end` 之間。其中 `map` method 提供一個字串陣列給 block。Ruby 中還有許多其他的 methods 提供了類似的方式可以讓程式設計師撰寫自己的 block 來完成此 method 該做的事。 @@ -105,7 +102,6 @@ Block 的靈感是由函數式程式設計語言而來。Matz 說到:”在 Ru class MyArray   include Enumerable end -{: .code .ruby-code} 一般來說,Ruby 使用者使用這種方式會比使用複雜且有很多限制的多重繼承來得清楚。 diff --git a/zh_TW/documentation/quickstart/2/index.md b/zh_TW/documentation/quickstart/2/index.md index 590552baf3..9365778cd3 100644 --- a/zh_TW/documentation/quickstart/2/index.md +++ b/zh_TW/documentation/quickstart/2/index.md @@ -10,7 +10,6 @@ lang: zh_TW irb(main):011:1> puts "Hello World!" irb(main):012:1> end => nil -{: .code .ruby-code} 從 `def h` 開始定義一個方法。它告訴 Ruby 方法名字是 `h`。下一行是方法的內容,也就是我們之前看過的 `puts "Hello World"`。接著最後一行 `end` 表示方法定義結束。 Ruby 回應 `=> nil` 告訴我們它知悉了這個方法定義。 @@ -25,7 +24,6 @@ World"`。接著最後一行 `end` 表示方法定義結束。 Ruby 回應 `=> n irb(main):014:0> h() Hello World! => nil -{: .code .ruby-code} 簡單吧。在 Ruby 中呼叫方法只要輸入方法名字就可以了。如果方法不需要參數,那麼括號可以省略。你也可以加上空括號,但不是必要的。 @@ -38,7 +36,6 @@ World"`。接著最後一行 `end` 表示方法定義結束。 Ruby 回應 `=> n irb(main):018:0> h("Matz") Hello Matz! => nil -{: .code .ruby-code} 正如預期... 讓我們仔細看看到底發生什麼事情。 @@ -57,7 +54,6 @@ World"`。接著最後一行 `end` 表示方法定義結束。 Ruby 回應 `=> n irb(main):023:0> h Hello World! => nil -{: .code .ruby-code} 這裡還有幾個小訣竅。第一是我們再次省略了方法的括號。如果方法呼叫很簡單,那麼括號建議你可以省略掉。另一個訣竅是參數有預設值 `World`。意思是說 “如果沒有給 name 參數,那麼就使用預設值 `"World"`“。 @@ -79,7 +75,6 @@ World"`。接著最後一行 `end` 表示方法定義結束。 Ruby 回應 `=> n irb(main):033:2> end irb(main):034:1> end => nil -{: .code .ruby-code} 新的關鍵字是 `class`。這定義了一個新的類別叫做 Greeter,以及屬於這個類別的方法。注意到 `@name` 這是一個實例變數,可以在類別裡面的方法中存取到。你可以看到在方法 `say_hi` 和 `say_bye` 裡使用了它。 diff --git a/zh_TW/documentation/quickstart/3/index.md b/zh_TW/documentation/quickstart/3/index.md index 63fc29c373..00a4bc7181 100644 --- a/zh_TW/documentation/quickstart/3/index.md +++ b/zh_TW/documentation/quickstart/3/index.md @@ -14,7 +14,6 @@ lang: zh_TW irb(main):037:0> g.say_bye Bye Pat, come back soon. => nil -{: .code .ruby-code} 一旦建立了 `g` 物件,它就會記得它的名字是 Pat。嗯,但是我們如何拿到這個名字的值呢? @@ -22,7 +21,6 @@ lang: zh_TW SyntaxError: compile error (irb):52: syntax error         from (irb):52 -{: .code .ruby-code} 啊,這樣不行。 @@ -44,7 +42,6 @@ lang: zh_TW     "clone", "public_methods", "respond_to?", "freeze",     "say_bye", "__id__", "=~", "methods", "nil?", "dup",     "instance_variables", "instance_of?"] -{: .code .ruby-code} 哇。有這麼多。我們不是只定義了兩個方法,怎麼回事呢? 這裡列出的是**所有** Greeter 物件的方法,因此也包括了它所繼承的類別的方法。如果我們只需要 Greeter 自己的方法,可以傳入一個 **false** @@ -52,7 +49,6 @@ lang: zh_TW irb(main):040:0> Greeter.instance_methods(false) => ["say_bye", "say_hi"] -{: .code .ruby-code} 看起來好多了。讓我們看看 greeter 物件對哪些方法有反應? @@ -62,7 +58,6 @@ lang: zh_TW => true irb(main):043:0> g.respond_to?("to_s") => true -{: .code .ruby-code} 它知道 `say_hi` 和 `to_s` (意思是轉換成字串,這是每個物件都有的方法),但是不知道 `name` 這個方法。 @@ -74,7 +69,6 @@ lang: zh_TW irb(main):045:1> attr_accessor :name irb(main):046:1> end => nil -{: .code .ruby-code} 在 Ruby 裡你可以再度打開一個類別然後修改它。這個改變會對之後產生的物件,甚至是已經產生的物件產生即時效果。所以,我們來建立一個新的物件試試看 @@ -98,7 +92,6 @@ lang: zh_TW irb(main):054:0> g.say_hi Hi Betty! => nil -{: .code .ruby-code} `attr_accessor` 會定義兩個新的方法,`name` 用來取值,而 `name=` 用來給值。 @@ -172,7 +165,6 @@ lang: zh_TW   mg.say_hi   mg.say_bye end -{: .code .ruby-code} 把這個檔案存成 “ri20min.rb”,然後輸入 “ruby ri20min.rb” 來執行它。您應該可以看到輸出是: diff --git a/zh_TW/documentation/quickstart/4/index.md b/zh_TW/documentation/quickstart/4/index.md index b71796a1cc..7bd1396e45 100644 --- a/zh_TW/documentation/quickstart/4/index.md +++ b/zh_TW/documentation/quickstart/4/index.md @@ -23,7 +23,6 @@ lang: zh_TW     puts "Hello #{@names}!"   end end -{: .code .ruby-code} 它現在會根據 `@names` 參數的不同而有不同的行為。如果是 nil,它會輸出三個點。沒必要對空氣打招呼,對吧? @@ -37,7 +36,6 @@ lang: zh_TW @names.each do |name|   puts "Hello #{name}!" end -{: .code .ruby-code} `each` 是一個可以接受程式區塊(a block of code)的方法,它會對 `@names` 裡的每個元素執行這個程式區塊,也就是從 `do` 到 `end` 的程式碼。一個程式區塊就像是一個匿名方法,也像是 `lambda`。而在直線 `|` 符號之間的是這個程式區塊的參數。 @@ -47,7 +45,6 @@ lang: zh_TW 大多數的程式語言會用 `for` 迴圈來做這件事情,例如在 C 裡面: for (i=0; i -{: .code .ruby-code} 這樣也行,只是沒這麼漂亮。你需要一個用過即丟的 `i` 變數、需要計算容器的長度、檢查離開迴圈的條件。而 Ruby 的方式漂亮多了,所有的工作都被包裝在 `each` 方法裡。在 `each` 內部會去輪流呼叫 `yield "Albert"`、`yield @@ -68,7 +65,6 @@ lang: zh_TW     puts "Goodbye #{@names}. Come back soon!"   end end -{: .code .ruby-code} `say_bye` 方法沒有用到 `each`,而是檢查 `@names`@ 是不是可以回應 `join` 方法。如果可以,就呼叫它。不然它就把它當做字串輸出。這個方法並不在乎變數真正的 @@ -81,7 +77,6 @@ lang: zh_TW 這就是 MegaGreeter 類別了。剩下的部份是就是使用這個類別而已。唯一要注意的技巧是以下這行: if __FILE__ == $0 -{: .code .ruby-code} `__FILE__` 是一個預先定義好的變數,內容是目前這個檔案的名稱。而 `$0` 是執行這隻程式的執行檔名稱。這個檢查是說 “如果這個檔案就是執行程式的檔案....”。這可以允許將這個檔案當做方法庫使用。也就是說,這個檔案如果當做方法庫使用時,不會執行這段程式。如果當做執行檔執行,就會執行這段程式。 diff --git a/zh_TW/documentation/quickstart/index.md b/zh_TW/documentation/quickstart/index.md index 8fcff73467..7c6c79e725 100644 --- a/zh_TW/documentation/quickstart/index.md +++ b/zh_TW/documentation/quickstart/index.md @@ -21,7 +21,6 @@ Ruby 附帶了一支程式可以讓你即時看到執行 Ruby 敘述的結果。 ^ irb(main):001:0> -{: .code .ruby-code} Ok,打開了,現在怎麼辦? @@ -29,7 +28,6 @@ Ok,打開了,現在怎麼辦? irb(main):001:0> "Hello World" => "Hello World" -{: .code .ruby-code} ## 讓 Ruby 聽話! @@ -39,7 +37,6 @@ Ok,打開了,現在怎麼辦? irb(main):002:0> puts "Hello World" Hello World => nil -{: .code .ruby-code} `puts` 是 Ruby 的基本輸出指令。但是什麼是 `=> nil` 呢? 那是那一行敘述的執行結果。 `puts` 總是回傳 nil,nil 在 Ruby 中表示一個絕對的空值。 @@ -50,26 +47,22 @@ nil,nil 在 Ruby 中表示一個絕對的空值。 irb(main):003:0> 3+2 => 5 -{: .code .ruby-code} 三加二,夠簡單了。那怎麼三乘二呢? 你可以試試,一點都不難,你也能夠隨意輸入數字試試。試著按按看 **上** 它會顯示上一行的 `3+2`,然後你可以往左移動到 `+` 更改成 `*` 乘號。 irb(main):004:0> 3*2 => 6 -{: .code .ruby-code} 接下來,讓我們試試看三的平方: irb(main):005:0> 3**2 => 9 -{: .code .ruby-code} 在 Ruby 中 `**` 是 “次方” 的意思。但是如果你想開根號呢? irb(main):006:0> Math.sqrt(9) => 3.0 -{: .code .ruby-code} 等一下,上面那是什麼? 如果你想說:”它是 9 的平方根” 那就對了。讓我們來仔細看一下。首先,什麼是 `Math`? @@ -91,7 +84,6 @@ nil,nil 在 Ruby 中表示一個絕對的空值。 irb(main):008:0> b = 4 ** 2 => 16 irb(main):009:0> Math.sqrt(a+b) => 5.0 -{: .code .ruby-code} 儘管這是一個不錯的計算機,但我們將逐漸脫離基本的 `Hello World`,[讓我們繼續吧](2/)。 diff --git a/zh_TW/documentation/ruby-from-other-languages/index.md b/zh_TW/documentation/ruby-from-other-languages/index.md index b13027d858..75f0cc936a 100644 --- a/zh_TW/documentation/ruby-from-other-languages/index.md +++ b/zh_TW/documentation/ruby-from-other-languages/index.md @@ -37,7 +37,6 @@ Python 的 for i in aList: ...)。在 Ruby 裡你會常常看到:   # 我們在程式區塊中   # 處理 this_item end -{: .code .ruby-code} 關於更多 `each` 的資訊 (以及 `collect`, `find`, `inject`, `sort` 等等),請參考 `ri Enumerable` (和 ri Enumerable#*func\_name*). @@ -49,7 +48,6 @@ Enumerable` (和 ri Enumerable#*func\_name*). x = 10 y = 11 z = if x true -{: .code .ruby-code} ### Symbols 不是輕量化的字串 @@ -62,7 +60,6 @@ Symbols 就如同一個識別符號。一個 symbol 就代表它是”誰”了 irb(main):002:0> "george".object_id == "george".object_id => false irb(main):003:0> -{: .code .ruby-code} `object_id` 方法會回傳物件的識別編號。如果有兩個物件有相同的 `object_id` 表示它們其實是同一個(指向同一個記憶體位置)。 如你所見,使用過 Symbols 之後,任何相同名字的 Symbol 都是指記憶體裡的同一個物件。對任何相同名字的 Symbols,它們的 `object_id` 都一樣。 @@ -84,7 +81,6 @@ key),還是物件內容(比如這個例子的 “george”)。 MyClass = Class.new do   attr_accessor :instance_var end -{: .code .ruby-code} 譯註:在 Ruby 中任何類別都是由 `Class` 類別所實例(new)出來的物件。 @@ -103,7 +99,6 @@ variable)、`@@` 開頭則是類別變數。 def Constant   11 end -{: .code .ruby-code} 這裡的 `Constant` 是 10,但是 `Constant()` 卻是 11。 @@ -117,7 +112,6 @@ Ruby 不像 Python 有關鍵字參數(keyword parameters)功能,但是可以 end some_keyword_params( :param_one => 10, :param_two => 42 ) # => {:param_one=>10, :param_two=>42} -{: .code .ruby-code} ### 一切為 true @@ -129,7 +123,6 @@ Ruby 不像 Python 有關鍵字參數(keyword parameters)功能,但是可以   print "0 is true" else:   print "0 is false" -{: .code .ruby-code} 這會輸出 “0 is false”。而在 Ruby 裡: @@ -139,7 +132,6 @@ Ruby 不像 Python 有關鍵字參數(keyword parameters)功能,但是可以 else   puts "0 is false" end -{: .code .ruby-code} 這會輸出 “0 is true”。 @@ -152,7 +144,6 @@ Ruby 不像 Python 有關鍵字參數(keyword parameters)功能,但是可以   def a_method; true; end   def another_method; false; end end -{: .code .ruby-code} 你可能會認為 `another_method` 是 public 的,但不是這樣。這個 ‘private’ 存取修飾到作用域(scope)結束,或是直到另一個存取修飾詞開始作用。方法預設都是 public 的: @@ -166,7 +157,6 @@ Ruby 不像 Python 有關鍵字參數(keyword parameters)功能,但是可以   # 這個 another_method 是 private 的   def another_method; false; end end -{: .code .ruby-code} `public`, `private` 和 `protected` 其實也是一種方法,所以可以接受參數。如果你傳入一個 Symbol,那個該 Symbol 代表的方法就會改變存取權限。 ### 方法存取權限 @@ -215,7 +205,6 @@ package 類別的實例可以呼叫,而 `private` 表示除了這個類別的         from (irb):25         from :0 irb(main):026:0> -{: .code .ruby-code} ### 類別是開放的 @@ -232,7 +221,6 @@ Ruby 的類別是開放的,你可以隨時打開它新增一點程式或是修 # 從一月一號 00:00 往後數 14 個小時 # (你終於醒了吧 ;) Time.mktime(2006, 01, 01) + 14.hours # => Sun Jan 01 14:00:00 -{: .code .ruby-code} ### 有趣的方法名稱 @@ -264,7 +252,6 @@ replace 的意思就是要修改替換自己。 # 其他物件就不受影響 other_car = Car.new other_car.inspect # => Cheap car -{: .code .ruby-code} ### Missing 方法 @@ -282,7 +269,6 @@ replace 的意思就是要修改替換自己。 __ :a, :b, 10 # => Method __ was called, but not found. It has these # arguments: a, b, 10 -{: .code .ruby-code} 以上程式會輸出呼叫的細節,但你可以隨意定義這個訊息。 @@ -296,7 +282,6 @@ replace 的意思就是要修改替換自己。 1.+(2) # 也等同於: 1.send "+", 2 -{: .code .ruby-code} ### Blocks 也算是物件 @@ -310,7 +295,6 @@ replace 的意思就是要修改替換自己。 adder = block { |a, b| a + b } # adder 是一個 Proc 物件 adder.class # => Proc -{: .code .ruby-code} 你也可以透過 Proc.new 或 lambda 在方法外建立程式區塊。 @@ -318,7 +302,6 @@ replace 的意思就是要修改替換自己。 method(:puts).call "puts is an object!" # => puts is an object! -{: .code .ruby-code} ### 操作符只是語法包裝 @@ -331,7 +314,6 @@ sugar),加上一些優先權規則。你要的話,舉例來說,我們可     self - other   end end -{: .code .ruby-code} 你不需要 C++ 的 `operator+` 等等。 diff --git a/zh_cn/about/index.md b/zh_cn/about/index.md index 600de76a5b..5948d79ce2 100644 --- a/zh_cn/about/index.md +++ b/zh_cn/about/index.md @@ -52,7 +52,6 @@ variables*),称命令为方法 (*methods*)。 从下列程序代码中 是纯面向对象的语言。 5.times { print "We *love* Ruby -- it's outrageous!" } -{: .code .ruby-code} 在许多语言中,数字和其它原生的类型都不是对象。而 Ruby 受 Smalltalk 语言影响,让所有的类型都可以赋予方法及产生实例变量,并让这些规则适用于 Ruby 所有对象。 @@ -72,7 +71,6 @@ Ruby 是一个相当灵活的语言,她允许用户去改变她本身。 Ruby y = 5.plus 6 # y is now equal to 11 -{: .code .ruby-code} Ruby 的符号只是语法的甜头 (syntactic sugar)。你可以随时重定义他们。 @@ -88,7 +86,6 @@ Ruby 的代码块是非常强大的。程序员可以给任何函数添加一个   %w[Google Yahoo MSN].map do |engine|     "http://www." + engine.downcase + ".com"   end -{: .code .ruby-code} 在上面的代码中,代码块是在 `do ... end` 中的结构。 `map` 函数将代码块应用到一个词的列表中。Ruby 的其他函数经常会为程序员留出一个空当给代码块来控制函数的功能。 @@ -104,7 +101,6 @@ Ruby 的代码块是非常强大的。程序员可以给任何函数添加一个 class MyArray   include Enumerable end -{: .code .ruby-code} 一般来说,Ruby 爱好者相对于复杂和限制颇多的多态继承方法来讲更偏向于这种混合方法。 diff --git a/zh_cn/documentation/quickstart/2/index.md b/zh_cn/documentation/quickstart/2/index.md index a61f6aa9db..2a9b649b6f 100644 --- a/zh_cn/documentation/quickstart/2/index.md +++ b/zh_cn/documentation/quickstart/2/index.md @@ -10,7 +10,6 @@ lang: zh_cn irb(main):011:1> puts "Hello World!" irb(main):012:1> end => nil -{: .code .ruby-code} `def h` 定义一个函数。它告诉 Ruby 我们的函数名字是 `h`。下一行是函数的内容, 正是我们前面看到过的那行代码:`puts "Hello World!"`。最后的一行 `end` 告诉 Ruby 函数的定义完成了。 @@ -25,7 +24,6 @@ lang: zh_cn irb(main):014:0> h() Hello World! => nil -{: .code .ruby-code} 很方便吧。在 Ruby 里调用函数就像提起 Ruby 的名字一样简单。如果函数不需要接受参数, 您只要提到它就够了。您可以加一对括号,但不是必需的。 @@ -39,7 +37,6 @@ lang: zh_cn irb(main):018:0> h("Matz") Hello Matz! => nil -{: .code .ruby-code} 和期待的一样。让我们再仔细看看究竟发生了什么。 @@ -58,7 +55,6 @@ lang: zh_cn irb(main):023:0> h Hello World! => nil -{: .code .ruby-code} 这里还有几个小窍门。第一是我们又一次省略了函数的括号。如果我们的命令看起来意图很明显的话, 函数的括号是可以省略的。另一个是函数缺省的参数值是 `World`。意思就是说 “如果 name 参数没有给出的话, name 的缺省值就设置为 `“World"`。 @@ -80,7 +76,6 @@ lang: zh_cn irb(main):033:2> end irb(main):034:1> end => nil -{: .code .ruby-code} 新的关键字 `class`! 这个关键字定义了一个新的类 Greeter 和它的一些函数。 特别留意一下 `@name`,这是一个实例变量。类里面的任何函数都可以使用实例变量。 您可以看到 `say_hi` 和 `say_bye` 函数都使用了它。 diff --git a/zh_cn/documentation/quickstart/3/index.md b/zh_cn/documentation/quickstart/3/index.md index 7d18cb86db..7bde47a330 100644 --- a/zh_cn/documentation/quickstart/3/index.md +++ b/zh_cn/documentation/quickstart/3/index.md @@ -14,7 +14,6 @@ lang: zh_cn irb(main):037:0> g.say_bye Bye Pat, come back soon. => nil -{: .code .ruby-code} 当 `g` 对象被建立后,它就记住了名字属性的值 Pat。Hmm… 如果我们想直接读取名字的值呢? @@ -22,7 +21,6 @@ lang: zh_cn SyntaxError: compile error (irb):52: syntax error         from (irb):52 -{: .code .ruby-code} 晕,做不到。 @@ -44,7 +42,6 @@ lang: zh_cn     "clone", "public_methods", "respond_to?", "freeze",     "say_bye", "__id__", "=~", "methods", "nil?", "dup",     "instance_variables", "instance_of?"] -{: .code .ruby-code} 哇。。。有这么多!可我们只定义了两个啊,怎么回事?这里列出的其实是 Greeter 对象包含的 **所有** 的函数,当然也就包括了它所继承的类的函数了。如果我们只希望列出 Greeter 自己的函数,可以提供一个 `false` 参数给 @@ -52,7 +49,6 @@ lang: zh_cn irb(main):040:0> Greeter.instance_methods(false) => ["say_bye", "say_hi"] -{: .code .ruby-code} 看起来好多了。我们来看看 greeter 会对哪些函数作出回应: @@ -62,7 +58,6 @@ lang: zh_cn => true irb(main):043:0> g.respond_to?("to_s") => true -{: .code .ruby-code} 它知道 `say_hi` 和 `to_s`(意思是把什么东西转换成字符串,这是每个对象都有的功能), 但是它不知道 `name`。 @@ -74,7 +69,6 @@ lang: zh_cn irb(main):045:1> attr_accessor :name irb(main):046:1> end => nil -{: .code .ruby-code} 在 Ruby 里,您可以把一个类打开然后改变它。这些改变会对以后生成的甚至是已经生成的对象产生即时效果。 下面我们来建一个新的 Greeter 对象,然后看一看它的 `@name` 属性。 @@ -97,7 +91,6 @@ lang: zh_cn irb(main):054:0> g.say_hi Hi Betty! => nil -{: .code .ruby-code} `attr_accessor` 会自动为我们定义两个新的函数, `name` 用来读取变量的值, `name=` 用来给变量赋值。 @@ -171,7 +164,6 @@ lang: zh_cn   mg.say_hi   mg.say_bye end -{: .code .ruby-code} 把这个文件储存到 “ri20min.rb”, 然后在命令行输入 “ruby ri20min.rb” 来运行它。 您应该可以看到:: diff --git a/zh_cn/documentation/quickstart/4/index.md b/zh_cn/documentation/quickstart/4/index.md index cd14cbd5bb..468ff99832 100644 --- a/zh_cn/documentation/quickstart/4/index.md +++ b/zh_cn/documentation/quickstart/4/index.md @@ -23,7 +23,6 @@ lang: zh_cn     puts "Hello #{@names}!"   end end -{: .code .ruby-code} 它现在会根据 `@names` 参数的不同而采取不同的行动。如果参数是 nil,它会打印三个点。没有理由和空气问好对吗? @@ -37,7 +36,6 @@ lang: zh_cn @names.each do |name|   puts "Hello #{name}!" end -{: .code .ruby-code} `each` 是一个可以接受代码块的函数。它在迭代每一个元素时都会调用一次之前所接受到的代码块。 代码块像是一个不需要命名的函数,和 `lambda` 类似。 在`| |`之间的就是传输给代码块的参数。 @@ -48,7 +46,6 @@ lang: zh_cn 大多数编程语言都是用 `for` 循环来完成迭代的,比如在 C 里面: for (i=0; i -{: .code .ruby-code} 这样也成,不过不那么优美。您需要一个没什么意思的 `i` 来监控列表长度和检测循环退出的判断。 Ruby 的方法对比来看就更清爽,所有的清理工作都被隐藏在 `each` 函数里了, 您只需要告诉它您想做什么。在 `each` @@ -69,7 +66,6 @@ lang: zh_cn     puts "Goodbye #{@names}. Come back soon!"   end end -{: .code .ruby-code} `say_bye` 函数并没有用到 `each`,而是查看 `@names` 是否支持 `join` 函数。如果是的话就调用,否则就简单的将变量转化为字符串。 @@ -82,7 +78,6 @@ lang: zh_cn 这就是 MegaGreeter 类的所有内容了。剩下的代码就只是调用一下这个类的函数。 还有最后一点小技术在这里: if __FILE__ == $0 -{: .code .ruby-code} `__FILE__` 是一个魔法值,它存有现在运行的脚本文件的名字。`$0` 是启动脚本的名字。 代码里的比较结构的意思是 “如果这是启动脚本的话...” 这允许代码作为库调用的时候不运行启动代码, 而在作为执行脚本的时候调用启动代码。 diff --git a/zh_cn/documentation/quickstart/index.md b/zh_cn/documentation/quickstart/index.md index d27a5b6cb6..cef223e6e9 100644 --- a/zh_cn/documentation/quickstart/index.md +++ b/zh_cn/documentation/quickstart/index.md @@ -19,7 +19,6 @@ lang: zh_cn ^ irb(main):001:0> -{: .code .ruby-code} 已经打开了。继续? @@ -27,7 +26,6 @@ lang: zh_cn irb(main):001:0> "Hello World" => "Hello World" -{: .code .ruby-code} ## Ruby 顺从您! @@ -37,7 +35,6 @@ lang: zh_cn irb(main):002:0> puts "Hello World" Hello World => nil -{: .code .ruby-code} `puts` 是 Ruby 语言里用来打印的基本命令。那 `=> nil` 是什么?其实是命令的返回值。 `puts` 命令永远返回 nil,nil 也是 Ruby 的空值。 @@ -48,26 +45,22 @@ nil,nil 也是 Ruby 的空值。 irb(main):003:0> 3+2 => 5 -{: .code .ruby-code} 三加二很简单。三减二呢?您可以试试啊。虽然输入的命令很短,不过您可以在原来命令的基础上进行修改。 试着按一下 **上方键** 看看是不是打出了原来输入的 `3+2`。 如果能正常显示出的话,您可以用**左方键**来移动光标直到 `+`,然后按退格删除它 并输入 `*`。 irb(main):004:0> 3*2 => 6 -{: .code .ruby-code} 下面我们来试试次方: irb(main):005:0> 3**2 => 9 -{: .code .ruby-code} 在 Ruby 里 `**` 是”次方”的意思。但如果您想开根号呢? irb(main):006:0> Math.sqrt(9) => 3.0 -{: .code .ruby-code} 等一下!上面那个东西是什么?您猜想:“它是不是真的对 9 开了平方呢?” 您猜对了!我们还是来仔细看一下。第一,什么是 `Math`? @@ -90,7 +83,6 @@ nil,nil 也是 Ruby 的空值。 => 16 irb(main):009:0> Math.sqrt(a+b) => 5.0 -{: .code .ruby-code} 尽管这是个非常好的计算器,我们已经要从基本的 `Hello World` 程序向更有意思的领域迈进了。[现在就开始吧](2/) diff --git a/zh_cn/documentation/ruby-from-other-languages/index.md b/zh_cn/documentation/ruby-from-other-languages/index.md index 30eb228961..d6ff2792a9 100644 --- a/zh_cn/documentation/ruby-from-other-languages/index.md +++ b/zh_cn/documentation/ruby-from-other-languages/index.md @@ -36,7 +36,6 @@ in aList: ...),但是在 Ruby 中,我们常会看到   # We're inside the block.   # deal with this_item. end -{: .code .ruby-code} 关于更多 `each` 的信息(还有 `collect`, `find`, `inject`, `sort`, etc.),请参考 `ri Enumerable` (和 ri Enumerable#*func\_name*)。 @@ -48,7 +47,6 @@ Enumerable` (和 ri Enumerable#*func\_name*)。 x = 10 y = 11 z = if x true -{: .code .ruby-code} ### 符号不是轻量的字符串 @@ -61,7 +59,6 @@ Enumerable` (和 ri Enumerable#*func\_name*)。 irb(main):002:0> "george".object_id == "george".object_id => false irb(main):003:0> -{: .code .ruby-code} `object_id` 函数返回的是对象的身份标识。如果两个对象有相同的 `object_id`, 那么他们就是相同的(指向同一个内存地址)。 可以看出,当符号在使用过一次后,任何相同字符的符号都会在内存中指向同一个对象地址。 也就是说任何相同字符的符号的 `object_id` 都是相同的。 @@ -82,7 +79,6 @@ Enumerable` (和 ri Enumerable#*func\_name*)。 MyClass = Class.new do   attr_accessor :instance_var end -{: .code .ruby-code} ### 可以改变的常量 @@ -96,7 +92,6 @@ Enumerable` (和 ri Enumerable#*func\_name*)。 def Constant   11 end -{: .code .ruby-code} 这里 `Constant` 是 10,而 `Constant()` 是 11。 @@ -110,7 +105,6 @@ Ruby 并不像 Python 一样支持命名参数,但可以用符和字典来替 end some_keyword_params( :param_one => 10, :param_two => 42 ) # => {:param_one=>10, :param_two=>42} -{: .code .ruby-code} ### 全是真值 @@ -122,7 +116,6 @@ Ruby 把任何不是 **nil** 和 **false** 的值当作真值。在 C,Python   print "0 is true" else:   print "0 is false" -{: .code .ruby-code} 这会打印出 “0 is false”,而在 Ruby 中: @@ -132,7 +125,6 @@ Ruby 把任何不是 **nil** 和 **false** 的值当作真值。在 C,Python else   puts "0 is false" end -{: .code .ruby-code} 会打印出 “0 is true”。 @@ -145,7 +137,6 @@ Ruby 把任何不是 **nil** 和 **false** 的值当作真值。在 C,Python   def a_method; true; end   def another_method; false; end end -{: .code .ruby-code} 您可能认为 `another_method` 是公开的。并不是这样的,”private” 权限声明会一直应用到类声明底线, 或者直到另外一个权限声明开始起作用。函数默认是公开的: @@ -159,7 +150,6 @@ Ruby 把任何不是 **nil** 和 **false** 的值当作真值。在 C,Python   # another_method is private   def another_method; false; end end -{: .code .ruby-code} `public`, `private` 和 `protected` 其实都是函数, 所以他们可以接受参数。如果您给他们传递一个符号的话,那么符号所代表的函数的可见性会被改变。 ### 函数访问 @@ -208,7 +198,6 @@ Ruby 有些不同。`public` 还是公开的。`private`         from (irb):25         from :0 irb(main):026:0> -{: .code .ruby-code} ### Classes are open @@ -222,7 +211,6 @@ Ruby 有些不同。`public` 还是公开的。`private` # 14 hours from 00:00 January 1st # (aka when you finally wake up ;) Time.mktime(2006, 01, 01) + 14.hours # => Sun Jan 01 14:00:00 -{: .code .ruby-code} ### Funny method names @@ -253,7 +241,6 @@ Object you defined it on. # Other objects are not affected other_car = Car.new other_car.inspect # => Cheap car -{: .code .ruby-code} ### Missing methods @@ -273,7 +260,6 @@ better fit your application, and many libraries do. Here is an example: __ :a, :b, 10 # => Method __ was called, but not found. It has these # arguments: a, b, 10 -{: .code .ruby-code} The code above just prints the details of the call, but you are free to handle the message in any way that is appropriate. @@ -288,7 +274,6 @@ A method call is really a **message** to another object: 1.+(2) # Which is the same as this: 1.send "+", 2 -{: .code .ruby-code} ### Blocks are Objects, they just don’t know it yet @@ -303,7 +288,6 @@ appending a special argument to the argument list, like so: adder = block { |a, b| a + b } # adder is now a Proc object adder.class # => Proc -{: .code .ruby-code} You can create blocks outside of method calls, too, by calling Proc.new with a block or calling the `lambda` method. @@ -312,7 +296,6 @@ Similarly, methods are also Objects in the making: method(:puts).call "puts is an object!" # => puts is an object! -{: .code .ruby-code} ### Operators are syntactic sugar @@ -326,7 +309,6 @@ method:     self - other   end end -{: .code .ruby-code} You don’t need C++’s `operator+`, etc.