Clojure 为什么赢了';这张照片没打印出来什么吗?
为什么这个不能打印出任何东西,但是如果我只使用(打印“ASDAS”),它会工作,我使用的是LightTable,它在控制台中打印出来Clojure 为什么赢了';这张照片没打印出来什么吗?,clojure,Clojure,为什么这个不能打印出任何东西,但是如果我只使用(打印“ASDAS”),它会工作,我使用的是LightTable,它在控制台中打印出来 (defn try [x] (print ("ASDASD") )) (try 5) try是一种特殊的异常处理形式。请看下面的例子 您可以: 通过(您的ns在这里/try 5)直接引用它,很可能(用户/try 5) 为函数使用不同的名称 Clojure中的try函数用于异常处理。。。更改您的函数并查看 这是: ("ASDF") 是函数调用,但字符串不
(defn try [x]
(print ("ASDASD")
))
(try 5)
try
是一种特殊的异常处理形式。请看下面的例子
您可以:
- 通过
直接引用它,很可能(您的ns在这里/try 5)
(用户/try 5)
- 为函数使用不同的名称
- Clojure中的try函数用于异常处理。。。更改您的函数并查看
这是:
("ASDF")
是函数调用,但字符串不是函数。不起作用
因此,这也不起作用:
(print ("ASDF"))
要打印字符串,请执行以下操作:
(print "ASDF")
名称try
不是一个好主意,因为它隐藏了Clojure核心中已经存在的名称
因此:
如果它起作用,那么您正试图在
(“ASDASD”)
中将字符串作为函数调用。您希望从中得到什么结果?在我看来,它要么通过隐藏try
(Scheme执行此操作),要么抱怨try
被保留(大多数语言都执行此操作)。忽略#“user/try
是一个弱点,也是错误的根源。@Sylwester它并不是那么简单。try
在Scheme中似乎不是作为一种特殊形式存在的,所以我不确定您想做什么比较。但是在Clojure中,如果我们允许对try/catch/finally
进行阴影处理,您会对普通的try做什么e> 在catch
被隐藏的范围内?大多数特殊的表单确实可以被隐藏(例如fn
),但是try/catch/finally
是复杂的,因为它们是三人一起工作的。@amalloy Scheme使用不同的语法(guard
)处理异常。当我执行(catch…)
在try
之外,我得到了catch:undefined
,因此我想如果try
被覆盖,并且它内部有一个catch
,它不会假定它是catch
,而是另一个未定义该名称的函数或宏。
(defn my-experiment [x]
(print x))
(my-experiment "ASDF")