Ads: Singset Premium Jekyll Theme. A beautiful and modern theme for Jekyll blog. Use code 2tv6qos to get $18 off your purchase!
Menggunakan Instance Eval Untuk Implementasi Ruby Block
- Kategori:
- ruby
Artikel ini dibuat berdasarkan pertanyaan pada StackOverflow mengenai implementasi Ruby block. Pada saat implementasi Ruby block, lebih baik menggunakan instance_eval
dibandingkan dengan yield
jika kita ingin Ruby block dikirimkan tanpa parameter seperti dibawah ini.
Menggunakan yield
class MyClass
def initialize
@my_array = []
end
def elements
block_given? ? yield(self) : @my_array
end
def add_element( text )
@my_array << text
end
end
# error
my_object = MyClass.new
my_object.elements {
add_element "hello"
add_element "world"
} # => NoMethodError: undefined method `add_element' for main:Object
p my_object.elements # => []
# ok
my_object = MyClass.new
my_object.elements { |a|
a.add_element "hello"
a.add_element "world"
}
p my_object.elements # => ["hello", "world"]
Menggunakan instance_eval
class MyClass
def initialize
@my_array = []
end
def elements(&block)
block_given? ? instance_eval(&block) : @my_array
end
def add_element( text )
@my_array << text
end
end
# ok, no error
my_object = MyClass.new
my_object.elements {
add_element "hello"
add_element "world"
}
p my_object.elements # => ["hello", "world"]
# ok too
my_object = MyClass.new
my_object.elements { |a|
a.add_element "hello"
a.add_element "world"
}
p my_object.elements # => ["hello", "world"]
- Tag:
- #ruby
Rekomendasi Services
Service-service dibawah ini pernah dan sedang oleh KAK Labs saat mengembangkan project dan sangat direkomendasikan.
- Digital Ocean - Daftar server cloud di Digital Ocean melalui link ini akan mendapatkan kredit $200
- Bunny CDN - CDN favorit, yang KAK Labs gunakan disemua project
- Namecheap - Tempat beli domain .id terfavorit.
- Backblaze - Online Backup agar laptop jika terkena ransomware tetap tenang
- Dediserve - Cloud server ini memiliki Datacenter di Jakarta, digunakan oleh project KAK Tools
Tulisan Terbaru
HTML Boilerplate
HTML Boilerplate versi KAK Labs
No-Class / Classless CSS Frameworks
Daftar CSS frameworks tanpa class versi KAK Labs
Microsoft C#
Review, rekomendasi link belajar dan rekomendasi extensions Visual Studio Code untuk C#
Typography
Typography, 50 Bytes CSS, dan 100 Bytes CSS
Membangun Penyimpanan RAID 5 - Bagian 2 (Tamat)
Bagian kedua membangun penyimpanan RAID, tulisan kali fokus bagaimana setup HDD Enclosure untuk mode RAID