Seperti yang Anda lihat dari jawabannya, Anda dapat mendefinisikan metode dengan cara yang berbeda dalam satu baris, tetapi pertanyaannya adalah, haruskah Anda? Definisi apa pun harus ditulis dengan cara yang jelas dan bersih untuk alasan pemeliharaan dan keterbacaan, jadi jika baris tunggal menjadi sulit digunakan atau membingungkan, sebarkan. Beberapa bahasa tampaknya mendorong pengkodean singkat sebagai cara untuk menjadi pengkodean kode, tetapi gaya pengkodean Ruby mendorong keanggunan, keterbacaan dan pemeliharaan di atas studi. Capai tiga yang pertama dan kami akan tunduk kepada Anda.
Manusia Timah
Jawaban:
104
Anda dapat menghindari penggunaan titik koma jika menggunakan tanda kurung:
Ini lebih lama daripada menggunakan titik koma ...?
Apollys mendukung Monica
76
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 .
# baddeftoo_much; something; something_else; end# okish - notice that the first ; is requireddefno_braces_method; body end# okish - notice that the second ; is optionaldefno_braces_method; body; end# okish - valid syntax, but no ; make it kind of hard to readdefsome_method() body end# gooddefsome_method
body
end
Satu pengecualian untuk aturan tersebut adalah metode badan kosong.
Di Ruby, nilai yang dikembalikan dari suatu metode adalah nilai yang dikembalikan oleh pernyataan terakhir. Anda tidak perlu di returnsini karena ini bukan klausa penjaga.
Damien
1
Dipilih karena, meskipun tidak diperlukan , returndapat menambah keterbacaan bagi mereka yang kurang berpengalaman (atau akrab dengan) Ruby. Itu salah satu hal YMMV ...
Jawaban:
Anda dapat menghindari penggunaan titik koma jika menggunakan tanda kurung:
def hello() :hello end
sumber
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 .
sumber
def add a,b; a+b end
Titik koma adalah terminator pernyataan sebaris untuk Ruby
Atau Anda bisa menggunakan
define_method
metode ini. (Sunting: Yang ini tidak digunakan lagi di ruby 1.9)define_method(:add) {|a,b| a+b }
sumber
Cara lain:
define_method(:greet) { puts 'hello' }
Dapat digunakan jika Anda tidak ingin memasukkan cakupan baru untuk metode saat mendefinisikannya.
sumber
define_method
telah "diprivatisasi" di Ruby 1.9Cara lain:
def greet() return 'Hello' end
sumber
return
sini karena ini bukan klausa penjaga.return
dapat menambah keterbacaan bagi mereka yang kurang berpengalaman (atau akrab dengan) Ruby. Itu salah satu hal YMMV ...