--- In [email protected], Edwin Pratomo wrote:

>   i == 1 and raise "error" rescue next nil

celingak celinguk - saya gak pernah tau ada sintaks rescue ruby begini :-/ 
yakin nih ini 
ruby way??

afaik (dalam contoh lain tapi senada) begini:

Object.respond_to?("foo") => 1

(1)

if true
  foo
end

(2)

foo if true

(3)

true && foo

nah kalo yang terakhir (3) memang ruby.

> tapi ini syntax error:
> foo = %w(foo bar baz).collect do |fn|
>   fn = "#{fn}.txt"
>   fh = File.open(fn, 'r') rescue next nil
>   "content of #{fn}"
> end
> 
> jika tidak ada assignment "fh = " maka jalan (tapi jadi tidak berguna 
> karena fh mau dipake). 
> pertanyaanya: kenapa jika ada assignment jadi error?

mustinya pertanyaan Panjenengan adalah apakah keluaran obyek File#open 
berperilaku 
boolean sebagaimana i == 1. 

> bentuk yg lebih legal tentu saja bisa:
> foo = %w(foo bar baz).collect do |fn|
>   fn = "#{fn}.txt"
>   begin
>     fh = File.open(fn, 'r')
>   rescue
>     next nil
>   end
>   "content of #{fn}"
> end

ini saya boleh dibilang cuma mimicking aja:

foo = %w(foo bar baz).map do |e|
  begin
    File.open("#{e}.txt") { |fh| "content of #{fh.readlines}" }
  rescue Errno::ENOENT
    nil
  end
end

buat saya : Avoid too clever code - Readability is more important that brevity. 
Anyway, 
Dari keinginan Panjenengan return output tsb sebetulnya mungkin bisa dihias 
dengan 
pattern decorator bila saya sudah jelas apa yang ingin dicapai, karena saya 
melihat 
code2x diatas tsb masih kaku, iya jelek..

> tapi jelek, terlalu bertele2. (mungkin wajar2 saja buat orang PHP atau java
> yg udah biasa bertele2).

> ada cara utk menulis bentuk panjang ini jadi ringkas?

ngomong2 soal cara menulis yang suka nulis ringkas bahkan bila cryptic pun juga 
tak apa 
tuh orang perl deh. (buah php dengan java no comment nanti panjang tak ada guna)

> rgds,
> Edwin.

arie
http://ariekusumaatmaja.wordpress.com

Kirim email ke