2013-01-22 175 views
0

我只是找出控制流,它的一切非常奇怪和困惑,因爲我以前從未使用過函數式語言,可能會有人糾正這對我來說:返回true或false發現串

-export([main/1, test/2]). 

main([]) -> 
    if 
     test("blue yellow green", "yellow") == true -> 
      {io:fwrite("found")}; 
     true -> 
      {io:fwrite("not found")} 
    end. 


test(Source, Find) -> 
    Pos = string:str(Source, Find), 
    if 
     Pos > 1 -> 
      {true}; 
     true -> 
      {false} 
    end. 

回答

3

的修改後的版本:

-module(test). 
-export([main/0, test/2]). 

main() -> 
    case test("blue yellow green", "yellow") of 
     true -> io:fwrite("found~n"); 
     false -> io:fwrite("not found~n") 
    end. 

test(Source, Find) -> 
    Pos = string:str(Source, Find), 
    if 
     Pos > 1 -> 
      true; 
     true -> 
      false 
    end. 

當您返回只有一個元素,你不應該使用{}

+0

我可能會使用'case string:str(Source,Find)of P when P> = 1 - > true; 0 - > false end'或類似的東西 –

+1

甚至只是'string:str(Source,Find)> = 1.' – rvirding