2016-10-08 26 views
2
let ttnf x = 
    if (x % 2 = 0) || (x % 3 = 0) && not(x % 5 = 0) then true 
     else 
      false 

在交互式面板中從Visual Studio 2015中獲取奇怪的響應。 我執行在F#交互面板上面的代碼,然後輸入說...F#函數,其中x可被2或3整除但不爲5

ttnf 15 

按下回車鍵,沒什麼......然後 命中Alt + Enter鍵返回它的第二次。 任何想法,爲什麼它沒有進入

ttnf 15 

自行返回真/假?

謝謝。

+1

似乎,你有很多初學者的問題。我想你可能想加入FSSF。有一個積極的渠道來幫助新手。只需在網站上註冊,過了一段時間,您就會收到邀請。如果您有任何問題,請在[F#聊天](http://chat.stackoverflow.com/rooms/51909/f)中給我一個ping。 –

+4

'&&'優先於'||',所以加上括號:'let ttnf x =(x%2 = 0 || x%3 = 0)&& x%5 <> 0' – ildjarn

回答

3

@ildjarn評論你的代碼中的錯誤,而是關於F#互動的行爲:當您直接進入FSI輸入代碼,你需要終止的每一項聲明與;;告訴FSI來解釋它,否則它只會等你繼續您的輸入(如您所見)。所以:

> let ttnf x = 
    if (x % 2 = 0 || x % 3 = 0) && not(x % 5 = 0) then true 
     else 
      false;; 

val ttnf : x:int -> bool 

> ttnf 15;; 

val it : bool = false 

> 
+5

您可以添加「@ildjarn評論的其他(未命名)部分」如果你有一個模式,如'if cond then true else false';這意味着如果'cond'爲'true',則返回'true',否則(如果'cond'爲'false')返回'false';你可以直接返回'cond'作爲真值。 – Sehnsucht

相關問題