Apakah def greet; puts "hello"; endsatu-satunya cara untuk mendefinisikan metode dalam satu baris di Ruby?
Apakah def greet; puts "hello"; endsatu-satunya cara untuk mendefinisikan metode dalam satu baris di Ruby?
Jawaban:
Anda dapat menghindari penggunaan titik koma jika menggunakan tanda kurung:
def hello() :hello end
Berikan saja jawaban baru yang lengkap:
Secara umum hindari metode baris tunggal. Meskipun mereka agak populer di alam liar, ada beberapa kekhasan tentang sintaks definisi mereka yang membuat penggunaannya tidak diinginkan. Bagaimanapun - tidak boleh ada lebih dari satu ekspresi dalam metode baris tunggal .
# bad
def too_much; something; something_else; end
# okish - notice that the first ; is required
def no_braces_method; body end
# okish - notice that the second ; is optional
def no_braces_method; body; end
# okish - valid syntax, but no ; make it kind of hard to read
def some_method() body end
# good
def some_method
body
end
Satu pengecualian untuk aturan tersebut adalah metode badan kosong.
# good
def no_op; end
Dari bbatsov / ruby-style-guide .
def add a,b; a+b end
Titik koma adalah terminator pernyataan sebaris untuk Ruby
Atau Anda bisa menggunakan define_methodmetode ini. (Sunting: Yang ini tidak digunakan lagi di ruby 1.9)
define_method(:add) {|a,b| a+b }
Cara lain:
define_method(:greet) { puts 'hello' }
Dapat digunakan jika Anda tidak ingin memasukkan cakupan baru untuk metode saat mendefinisikannya.
define_methodtelah "diprivatisasi" di Ruby 1.9
Cara lain:
def greet() return 'Hello' end
returnsini karena ini bukan klausa penjaga.