與當

2017-06-15 60 views
3

Case語句使用圖示操作:與當

case x 
when 1 
    "one" 
when 2 
    "two" 
when 3 
    "three" 
else 
    "many" 
end 

使用===運營商進行評估。使用case表達式的值作爲參數,調用when表達式的值來調用此運算符。以上的情況下聲明等效於以下:

if 1 === x 
    "one" 
elsif 2 === x 
    "two" 
elsif 3 === x 
    "three" 
else 
    "many" 
end 

在這種情況下:

A = 1 
B = [2, 3, 4] 
case reason 
when A 
    puts "busy" 
when *B 
    puts "offline" 
end 

when *B部分不能被重寫到*B === 2

這是關於圖示操作?圖示操作符是關於分配,而不是比較。 case語句如何處理when *B

+2

你的第一和第二個例子之間的微小差別:如果'x'是一種方法,它只是調用一次在第一個例子,但最多三次在第二個例子。 – Stefan

回答

3

但圖示操作者將指派,沒有比較。

在這種情況下,*轉換一個array into an argument list

when *[2, 3, 4] 

相當於:

when 2, 3, 4 

就像在一個方法調用:

foo(*[2, 3, 4]) 

相當於:

foo(2, 3, 4)