4
나는이 간단한 코드가 작동하지 않는 이유를 알아 내려고 지난 30 분 동안 벽에 머리를 두드 리고있었습니다. 적어도 하나의 명령 행 인수가 지정되었는지 확인하는 것입니다. 나는이 코드를 실행하면Clojure의 간단한 if-else 분기 논리
(defn check_args []
(if (first *command-line-args*)
println "value is not nil"
println "value is nil"))
(check_args)
, 나는 말한다 런타임 예외로 끝날 :
java.lang.RuntimeException: Too many arguments to if
을 나는 뭔가 간단 확신하지만 내 인생 내가 알아낼 수 없습니다 문제가있는 곳. 시퀀스의 첫 번째 항목을 가져 오는 코드는 시퀀스의 첫 번째 항목을 반환하고, 존재하지 않으면 nil을 반환하므로 매우 간단합니다.
감사를보십시오. 내가하고있는 일에 대해 나는 함수를 호출했기 때문에 괄호가 필요했다. 문자열을 그냥 돌려주고 싶다면 필요하지 않았을 것입니다. –
do 문은 if 논리의 일부로 여러 함수 호출을 대괄호로 묶을 수 있기 때문에 무언가 사실이라면 do 함수를 사용하면 여러 가지 작업을 수행 할 수 있습니다. – octopusgrabbus