2011-10-19 35 views
28

Tôi biết tôi có thể sống mà không có nó, nhưng câu hỏi đã làm tôi thất vọng.Ruby tương đương với toán tử Elvis (? :) của Groovy?

Có thành ngữ Ruby nào tương đương với số Elvis operator (?:) của Groovy không?

Về cơ bản, tôi muốn để có thể rút ngắn này

PARAM = ARGV[0] ? ARGV[0] : 'default' 

Hoặc tương đương

PARAM = 'default' unless PARAM = ARGV[0] 

Into một cái gì đó như thế này

PARAM = ARGV[0] ?: 'default' 
+1

bản sao có thể có của [Cái gì || = có nghĩa là trong Ruby?] (Http://stackoverflow.com/questions/995593/what-does-mean-in-ruby) –

+5

@AndrewGrimm Chỉ khi bạn đã biết câu trả lời : p – Igor

Trả lời

42

Đừng bận tâm :-) Tôi chỉ tìm thấy tự trả lời sau khi tìm ra tên của toán tử.

Từ here:

PARAM = ARGV[0] || 'default' 

(Phải là vì tôi đang tung hứng 4 ngôn ngữ ngay bây giờ vì vậy tôi quên tôi có thể làm điều đó ở nơi đầu tiên.)

+3

Hoặc, nếu bạn đang làm một cái gì đó như '@params = @params || 5 'bạn có thể rút ngắn nó thành' @params || = 5' –

+3

@RyanBigg: Để trở thành thực tế, nó giống như '@params || @params = 5'. http://stackoverflow.com/questions/995593/what-does-mean-in-ruby/2505285#2505285 –

3

Không phải là PARAM = ARGV[0] ? ARGV[0] : 'default' cùng là PARAM = (ARGV[0] || 'default')?

Các vấn đề liên quan