2013-08-22 32 views

cevap

3

Bu sayfada okuyabildiğimden ve bağlantılı bir sayfadan (http://docs.julialang.org/en/latest/manual/control-flow/#man-short-circuit-evaluation), no. Operasyonların sırası farklıdır. Böyle biter: Eğer

if var1 

Sonra

yaptığı gibi eğer

if (var1) && (var2 != 1) 

Birincisi, xscalar değişken, bir if deyimi tatmin edecek bir değer için teslim ve bu yalnızca kabul, sonraki kısmı değerlendirilmek yapar: başka bir deyişle

if var2 != 1 

, bu iki ifade kabaca eşdeğerdir:

if var1 
    if var2 != 1 

and 

if var1 && var2 != 1 

(Julia sözdizimi bilgi eksikliğini affet)

Bunun bir piton eşdeğer olacaktır: daha açıklıkla göstermek için parantez ile

if var1 and var2 != 1: 

ya,

if (var1) and (var2 != 1) : 
+0

kastediyorsanız: 'if (xscalar) ve (dim! = 1)'? –

+0

Değerlerin değerlendirildiği sırayı açıklamaya çalışıyordum, hala Julia'da, python – Shade

+0

değil Python'da bir eşdeğer önerebilir misin, yoksa Python'a biraz benzetme yapabilir misin? –

13

You ayrıştırıcının bunu nasıl yorumladığını görmek için her zaman bir ifade koyabilirsiniz:

julia> :(var1 && var2 != 1) 
:(var1 && (var2!=1)) 

Bu durumda, !=, &&'dan daha sıkı bağlanır. Bu, C ve Java gibi, bu iki operatöre sahip dillerdeki standart önceliktir.

+1

Bu alıntı özelliği çok yararlı! Teşekkür ederim! –