From f1d18e7e493c468f372598620837fedfb07271bf Mon Sep 17 00:00:00 2001 From: Leonardy Kristianto Date: Wed, 28 Oct 2015 02:14:30 +0800 Subject: Rename ruby.html.markdown to ruby-hu.html.markdown --- hu-hu/ruby.html.markdown | 555 ----------------------------------------------- 1 file changed, 555 deletions(-) delete mode 100644 hu-hu/ruby.html.markdown (limited to 'hu-hu/ruby.html.markdown') diff --git a/hu-hu/ruby.html.markdown b/hu-hu/ruby.html.markdown deleted file mode 100644 index 169f2b8e..00000000 --- a/hu-hu/ruby.html.markdown +++ /dev/null @@ -1,555 +0,0 @@ ---- -language: ruby -lang: hu-hu -filenev: learnruby.rb -contributors: - - ["David Underwood", "http://theflyingdeveloper.com"] - - ["Joel Walden", "http://joelwalden.net"] - - ["Luke Holder", "http://twitter.com/lukeholder"] - - ["Tristan Hume", "http://thume.ca/"] - - ["Nick LaMuro", "https://github.com/NickLaMuro"] - - ["Marcos Brizeno", "http://www.about.me/marcosbrizeno"] - - ["Ariel Krakowski", "http://www.learneroo.com"] - - ["Dzianis Dashkevich", "https://github.com/dskecse"] - - ["Levi Bostian", "https://github.com/levibostian"] - - ["Rahil Momin", "https://github.com/iamrahil"] - translators: - - ["Zsolt Prontvai", "https://github.com/prozsolt"] ---- - -```ruby -# Ez egy komment - -=begin -Ez egy többsoros komment -Senki sem használja -Neked sem kellene -=end - -# Először is: Minden objektum - -# A számok objektumok - -3.class #=> Fixnum - -3.to_s #=> "3" - - -# Néhány alapvető számtani művelet -1 + 1 #=> 2 -8 - 1 #=> 7 -10 * 2 #=> 20 -35 / 5 #=> 7 -2**5 #=> 32 - -# A számtani művelet csak szintaktikus cukor -# az objektumon történő függvény hívásra -1.+(3) #=> 4 -10.* 5 #=> 50 - -# A speciális értékek objektumok -nil # Nincs itt semmi látnivaló -true # igaz -false # hamis - -nil.class #=> NilClass -true.class #=> TrueClass -false.class #=> FalseClass - -# Egyenlőség -1 == 1 #=> true -2 == 1 #=> false - -# Egyenlőtlenség -1 != 1 #=> false -2 != 1 #=> true - -# A false-on kívül, nil az egyetlen hamis érték - -!nil #=> true -!false #=> true -!0 #=> false - -# Még több összehasonlítás -1 < 10 #=> true -1 > 10 #=> false -2 <= 2 #=> true -2 >= 2 #=> true - -# Logikai operátorok -true && false #=> false -true || false #=> true -!true #=> false - -# A logikai operátoroknak alternatív verziójuk is van sokkal kisebb -# precedenciával. Ezeket arra szánták, hogy több állítást összeláncoljanak -# amíg egyikük igaz vagy hamis értékkel nem tér vissza. - -# `csinalj_valami_mast` csak akkor fut le, ha `csinalj_valamit` igaz értékkel -# tért vissza. -csinalj_valamit() and csinalj_valami_mast() -# `log_error` csak akkor fut le, ha `csinalj_valamit` hamis értékkel -# tért vissza. -csinalj_valamit() or log_error() - - -# A sztringek objektumok - -'Én egy sztring vagyok'.class #=> String -"Én is egy sztring vagyok".class #=> String - -helykitolto = 'interpolációt használhatok' -"Sztring #{helykitolto}, ha dupla időzőjelben van a sztringem" -#=> "Sztring interpolációt használhatok, ha dupla időzőjelben van a sztringem" - -# A szimpla idézőjelet preferáljuk, ahol csak lehet, -# mert a dupla idézőjel extra számításokat végez. - -# Kombinálhatunk sztringeket, de nem számokkal -'hello ' + 'world' #=> "hello world" -'hello ' + 3 #=> TypeError: can't convert Fixnum into String -'hello ' + 3.to_s #=> "hello 3" - -# kiírás a kimenetre -puts "Írok" - -# Változók -x = 25 #=> 25 -x #=> 25 - -# Értékadás az adott értékkel tér vissza -# Ez azt jelenti, hogy használhatunk többszörös értékadást: - -x = y = 10 #=> 10 -x #=> 10 -y #=> 10 - -# Konvencióból, snake_case változó neveket használj -snake_case = true - -# Leíró változó neveket használj -ut_a_projekt_gyokerehez = '/jo/nev/' -ut = '/rossz/nev/' - -# A szimbólumok (objektumok) -# A szimbólumok megváltoztathatatlan, újra felhasználható konstans, -# mely belsőleg egész számként reprezentált. Sokszor sztring helyett használják, -# hogy effektíven közvetítsünk konkrét, értelmes értékeket - -:fuggoben.class #=> Symbol - -statusz = :fuggoben - -statusz == :fuggoben #=> true - -statusz == 'fuggoben' #=> false - -statusz == :jovahagyott #=> false - -# Tömbök - -# Ez egy tömb -tomb = [1, 2, 3, 4, 5] #=> [1, 2, 3, 4, 5] - -# A tömmbök különböző tipusú dolgokat tartalmazhat - -[1, 'hello', false] #=> [1, "hello", false] - -# Tömbök indexelhetőek -# Az elejéről -tomb[0] #=> 1 -tomb[12] #=> nil - -# Akárcsak a számtani műveletek [var] hozzáférés -# is csak szintaktikus cukor -# a [] függvény hívására az objektumon -tomb.[] 0 #=> 1 -tomb.[] 12 #=> nil - -# A végéről -tomb[-1] #=> 5 - -# Kezdőértékkel és hosszal -tomb[2, 3] #=> [3, 4, 5] - -# Tömb megfordítása -a=[1,2,3] -a.reverse! #=> [3,2,1] - -# Vagy tartománnyal -tomb[1..3] #=> [2, 3, 4] - -# Így adhatunk a tömbhöz -tomb << 6 #=> [1, 2, 3, 4, 5, 6] -# Vagy így -tomb.push(6) #=> [1, 2, 3, 4, 5, 6] - -# Ellenőrízük, hogy a tömb tartalmaz egy elemet -tomb.include?(1) #=> true - -# Hash-ek a ruby elsődleges szótárjai kulcs/érték párokkal -# Hash-eket kapcsos zárójellel jelöljük -hash = { 'szin' => 'zold', 'szam' => 5 } - -hash.keys #=> ['szin', 'szam'] - -# Hash-ekben könnyen kreshetünk a kulcs segítségével: -hash['szin'] #=> 'zold' -hash['szam'] #=> 5 - -# Nem létező kulcsra keresve nil-t kapunk: -hash['nincs itt semmi'] #=> nil - -# Ruby 1.9-től, egy külnleges szintaxist is használhatunk a szimbólumot -# használunk kulcsnak - -uj_hash = { defcon: 3, action: true } - -uj_hash.keys #=> [:defcon, :action] - -# Ellenőrizzük, hogy az adott kulcs és érték bene-e van a hash-ben -uj_hash.has_key?(:defcon) #=> true -uj_hash.has_value?(3) #=> true - -# Tip: A tömbök és hash-ek is felsorolhatóak -# Sok közös függvényük van, akár az each, map, count, és több - -# Kontroll Struktúrák - -if true - 'ha állítás' -elsif false - 'különben ha, opcionális' -else - 'különben, szintén opcionális' -end - -for szamlalo in 1..5 - puts "iteracio #{szamlalo}" -end -#=> iteracio 1 -#=> iteracio 2 -#=> iteracio 3 -#=> iteracio 4 -#=> iteracio 5 - -# HOWEVER, No-one uses for loops. -# Instead you should use the "each" method and pass it a block. -# A block is a bunch of code that you can pass to a method like "each". -# It is analogous to lambdas, anonymous functions or closures in other -# programming languages. -# -# The "each" method of a range runs the block once for each element of the range. -# The block is passed a counter as a parameter. -# Calling the "each" method with a block looks like this: - -(1..5).each do |counter| - puts "iteration #{counter}" -end -#=> iteration 1 -#=> iteration 2 -#=> iteration 3 -#=> iteration 4 -#=> iteration 5 - -# You can also surround blocks in curly brackets: -(1..5).each { |counter| puts "iteration #{counter}" } - -# The contents of data structures can also be iterated using each. -array.each do |element| - puts "#{element} is part of the array" -end -hash.each do |key, value| - puts "#{key} is #{value}" -end - -counter = 1 -while counter <= 5 do - puts "iteration #{counter}" - counter += 1 -end -#=> iteration 1 -#=> iteration 2 -#=> iteration 3 -#=> iteration 4 -#=> iteration 5 - -jegy = '4' - -case jegy -when '5' - puts 'Kitünő' -when '4' - puts 'Jó' -when '3' - puts 'Közepes' -when '2' - puts 'Elégsége' -when '1' - puts 'Elégtelen' -else - puts 'Alternatív értékelés, hm?' -end -#=> "Jó" - -# case-ek tartományokat is használhatnak -jegy = 82 -case jegy -when 90..100 - puts 'Hurrá!' -when 80...90 - puts 'Jó munka' -else - puts 'Megbuktál!' -end -#=> "Jó munka" - -# kivétel kezelés: -begin - # kód ami kivételt dobhat - raise NoMemoryError, 'Megtelt a memória' -rescue NoMemoryError => kivetel_valtozo - puts 'NoMemoryError-t dobott', kivetel_valtozo -rescue RuntimeError => mas_kivetel_valtozo - puts 'RuntimeError dobott most' -else - puts 'Ez akkor fut ha nem dob kivételt' -ensure - puts 'Ez a kód mindenképpen lefut' -end - -# Függvények - -def ketszeres(x) - x * 2 -end - -# Függvények (és egyébb blokkok) implicit viszatértnek az utolsó értékkel -ketszeres(2) #=> 4 - -# Zárójelezés opcionális, ha az eredmény félreérthetetlen -ketszeres 3 #=> 6 - -ketszeres ketszeres 3 #=> 12 - -def osszeg(x, y) - x + y -end - -# Függvény argumentumait vesszővel választjuk el. -osszeg 3, 4 #=> 7 - -osszeg osszeg(3, 4), 5 #=> 12 - -# yield -# Minden függvénynek van egy implicit, opcionális block paramétere -# 'yield' kulcsszóval hívhatjuk - -def korulvesz - puts '{' - yield - puts '}' -end - -korulvesz { puts 'hello world' } - -# { -# hello world -# } - - -# Fuggvénynek átadhatunk blokkot -# "&" jelöli az átadott blokk referenciáját -def vendegek(&block) - block.call 'valami_argumentum' -end - -# Argumentum lisát is átadhatunk, ami tömbé lesz konvertálva -# Erre való a splat operátor ("*") -def vendegek(*array) - array.each { |vendeg| puts vendeg } -end - -# Osztályt a class kulcsszóval definiálhatunk -class Ember - - # Az osztály változó. Az osztály minden példánnyával megvan osztva - @@faj = 'H. sapiens' - - # Alap inicializáló - def initialize(nev, kor = 0) - # Hozzárendeli az argumentumot a "nev" példány változóhoz - @nev = nev - # Ha nem adtunk meg kort akkor az alapértemezet értéket fogja használni - @kor = kor - end - - # Alap setter függvény - def nev=(nev) - @nev = nev - end - - # Alap getter függvény - def nev - @nev - end - - # A fönti funkcionalítást az attr_accessor függvénnyel is elérhetjük - attr_accessor :nev - - # Getter/setter függvények egyenként is kreálhatóak - attr_reader :nev - attr_writer :nev - - # Az osztály függvények "self"-et hasznalnak, hogy megkülönböztessék magukat a - # példány függvényektől - # Az osztályn hívhatóak, nem a példányon - def self.mond(uzenet) - puts uzenet - end - - def faj - @@faj - end -end - - -# Példányosítsuk az osztályt -jim = Ember.new('Jim Halpert') - -dwight = Ember.new('Dwight K. Schrute') - -# Hívjunk meg pár függvényt -jim.faj #=> "H. sapiens" -jim.nev #=> "Jim Halpert" -jim.nev = "Jim Halpert II" #=> "Jim Halpert II" -jim.nev #=> "Jim Halpert II" -dwight.faj #=> "H. sapiens" -dwight.nev #=> "Dwight K. Schrute" - -# Hívjuk meg az osztály függvényt -Ember.mond('Hi') #=> "Hi" - -# Változók szókjait az elnevezésük definiálja -# $ kezdetű változók globálisak -$var = "Én egy globális változó vagyok" -defined? $var #=> "global-variable" - -# Változók amik @-al kezdődnek példány szkópjuk van -@var = "Én egy példány változó vagyok" -defined? @var #=> "instance-variable" - -# Változók amik @@-al kezdődnek példány szkópjuk van -@@var = "Én egy osztály változó vagyok" -defined? @@var #=> "class variable" - -# Változók amik nagy betűvel kezdődnek a konstansok -Var = "Konstans vagyok" -defined? Var #=> "constant" - -# Az osztály is objetum. Tehát az osztálynak lehet példány változója -# Az osztályváltozón osztozik minden pédány és leszármazott - -# Ős osztály -class Ember - @@foo = 0 - - def self.foo - @@foo - end - - def self.foo=(ertek) - @@foo = ertek - end -end - -# Leszarmazott osztály -class Dolgozo < Ember -end - -Ember.foo # 0 -Dolgozo.foo # 0 - -Ember.foo = 2 # 2 -Dolgozo.foo # 2 - -# Az osztálynak példány változóját nem látja az osztály leszármazottja. - -class Ember - @bar = 0 - - def self.bar - @bar - end - - def self.bar=(ertek) - @bar = ertek - end -end - -class Doctor < Ember -end - -Ember.bar # 0 -Doctor.bar # nil - -module ModulePelda - def foo - 'foo' - end -end - -# Modulok include-olása a fügvényeiket az osztály példányaihoz köti. -# Modulok extend-elésa a fügvényeiket magához az osztályhoz köti. - -class Szemely - include ModulePelda -end - -class Konyv - extend ModulePelda -end - -Szemely.foo # => NoMethodError: undefined method `foo' for Szemely:Class -Szemely.new.foo # => 'foo' -Konyv.foo # => 'foo' -Konyv.new.foo # => NoMethodError: undefined method `foo' - -# Callback-ek végrehajtódnak amikor include-olunk és extend-elünk egy modult - -module ConcernPelda - def self.included(base) - base.extend(ClassMethods) - base.send(:include, InstanceMethods) - end - - module ClassMethods - def bar - 'bar' - end - end - - module InstanceMethods - def qux - 'qux' - end - end -end - -class Valami - include ConcernPelda -end - -Valami.bar # => 'bar' -Valami.qux # => NoMethodError: undefined method `qux' -Valami.new.bar # => NoMethodError: undefined method `bar' -Valami.new.qux # => 'qux' -``` - -## Egyéb források - -- [Learn Ruby by Example with Challenges](http://www.learneroo.com/modules/61/nodes/338) -- [Official Documentation](http://www.ruby-doc.org/core-2.1.1/) -- [Ruby from other languages](https://www.ruby-lang.org/en/documentation/ruby-from-other-languages/) -- [Programming Ruby](http://www.amazon.com/Programming-Ruby-1-9-2-0-Programmers/dp/1937785491/) - A régebbi [ingyenes változat](http://ruby-doc.com/docs/ProgrammingRuby/) elérhető online. -- [Ruby Style Guide](https://github.com/bbatsov/ruby-style-guide) -- cgit v1.2.3