Permalink
Browse files

use shorter line

  • Loading branch information...
1 parent f850ba2 commit 3614fd48cd5f47bae74b3f1ad688b2519c68caa7 @xinuc committed Apr 17, 2012
Showing with 23 additions and 8 deletions.
  1. +23 −8 Session3.md
View
@@ -51,7 +51,9 @@ end
hoo # => Exception: Negative number
```
-Selain menggunakan keyword `rescue` dan `raise`, kita bisa juga menggunakan method `catch` dan `throw` pada Ruby. Penggunaan argumen `catch` dan `throw` pada Ruby ini berbeda dengan di Java, meskipun namanya sama.
+Selain menggunakan keyword `rescue` dan `raise`, kita bisa juga menggunakan method `catch`
+dan `throw` pada Ruby. Penggunaan argumen `catch` dan `throw` pada Ruby ini berbeda
+dengan di Java, meskipun namanya sama.
```ruby
def print_me(n)
@@ -65,6 +67,8 @@ catch(:done) do
end
```
+Penggunaan `throw` dan `catch` di ruby sangat jarang dilakukan dan sebaiknya dihindari
+
## Advanced Blocks
### Implicit Block
@@ -106,7 +110,11 @@ end
Ruby memungkinkan kita menyimpan *procedure* atau `Proc` sebagai objek lengkap dengan konteksnya.
-Penggunaan *block* pada Ruby itu relatif sederhana. Meskipun demikian, kita mungkin perlu punya beberapa *block* yang berbeda dan menggunakannya berkali-kali. Untuk menghindari kode yang repetitif tersebut, kita bisa menyimpannya sebagai *procedure* atau `Proc`, sebagai objek yang lengkap dengan konteksnya. Perbedaan antara *block* dan `Proc` adalah *block* merupakan suatu `Proc` yang tidak bisa disimpan dan merupakan solusi sekali pakai.
+Penggunaan *block* pada Ruby itu relatif sederhana. Meskipun demikian,
+kita mungkin perlu punya beberapa *block* yang berbeda dan menggunakannya berkali-kali.
+Untuk menghindari kode yang repetitif tersebut, kita bisa menyimpannya sebagai *procedure*
+atau `Proc`, sebagai objek yang lengkap dengan konteksnya. Perbedaan antara *block* dan
+`Proc` adalah *block* merupakan suatu `Proc` yang tidak bisa disimpan dan merupakan solusi sekali pakai.
```ruby
def foo
@@ -132,7 +140,8 @@ foo # => counting - 12345
### Lambda
-Di Ruby, *lambda* merupakan suatu *method* yang menciptakan objek *Proc* yang terkait dengan konteks saat ini dan melakukan pengecekan parameter ketika dipanggil.
+Di Ruby, *lambda* merupakan suatu *method* yang menciptakan objek *Proc* yang terkait dengan konteks saat ini
+dan melakukan pengecekan parameter ketika dipanggil.
Berbeda dengan Proc, lambda akan mengecek jumlah argumen yang dioper.
@@ -161,16 +170,20 @@ end
## Classes as Objects
-*Object* merupakan *root* dari hierarki kelas di Ruby. Semua *method* dari kelas *Object* akan tersedia di seluruh kelas kecuali di-*override* secara eksplisit. Selengkapnya ada di http://www.ruby-doc.org/core/classes/Object.html
+*Object* merupakan *root* dari hierarki kelas di Ruby. Semua *method* dari kelas *Object* akan tersedia
+di seluruh kelas kecuali di-*override* secara eksplisit. Selengkapnya ada di http://www.ruby-doc.org/core/classes/Object.html
## Metaprogramming
-*Metaprogramming* merupakan pemrograman yang memanipulasi program lainnya atau bahkan dirinya sendiri, atau mengerjakan hal-hal yang biasanya dilakukan pada *compile time*, pada waktu *runtime*. Kemampuan suatu objek untuk memanipulasi dirinya sendiri ini sering disebut sebagai *reflection*.
+*Metaprogramming* merupakan pemrograman yang memanipulasi program lainnya atau bahkan dirinya sendiri,
+atau mengerjakan hal-hal yang biasanya dilakukan pada *compile time*, pada waktu *runtime*.
+Kemampuan suatu objek untuk memanipulasi dirinya sendiri ini sering disebut sebagai *reflection*.
### Monkey Patching
-Salah satu bentuk *metaprogramming* adalah *monkey patching*, yaitu memodifikasi *runtime code* dari suatu bahasa yang dinamis tanpa mengubah *source code* aslinya.
+Salah satu bentuk *metaprogramming* adalah *monkey patching*, yaitu memodifikasi *runtime code* dari suatu
+bahasa yang dinamis tanpa mengubah *source code* aslinya.
```ruby
class Array
@@ -206,7 +219,9 @@ Foo.new.timestamp
### method_missing
-Ketika kita mengirimkan pesan ke objek, objek akan mengeksekusi *method* pertama yang ditemukannya pada *method lookup path* dengan nama yang sama persis dengan pesan. Jika tidak ditemukan, ia akan melemparkan *exception* NoMethodError, kecuali kalau kita sudah menyediakan sebuah *method* bernama `method_missing`.
+Ketika kita mengirimkan pesan ke objek, objek akan mengeksekusi *method* pertama yang ditemukannya pada
+*method lookup path* dengan nama yang sama persis dengan pesan. Jika tidak ditemukan,
+ ia akan melemparkan *exception* NoMethodError, kecuali kalau kita sudah menyediakan sebuah *method* bernama `method_missing`.
```ruby
class Foo
@@ -218,4 +233,4 @@ end
Foo.new.bar # => bar not found
```
-## I/O
+## I/O

0 comments on commit 3614fd4

Please sign in to comment.