我希望能够在循环内收集多个列表。
我知道这可以在没有循环的情况下完成,但是我想知道这是否也可以通过循环来完成。我想要这样的东西:
(loop for var in list
(if (cond1 var)
(if (cond2 var)
collect into list1
collect into list2))
finally (list list1 list2))
Run Code Online (Sandbox Code Playgroud)
我得到的错误是LOOP keyword is expected,我猜应该在 awhen或 a之后立即使用 collect loop。有什么办法可以解决吗?
通常,Smalltalk中的if看起来像这样
condition
ifTrue: [ ... ]
ifFalse: [ ... ].
Run Code Online (Sandbox Code Playgroud)
但是,我无法找到是否允许省略其中一个部分,例如ifTrue: ..或ifFalse ...
有没有我遗失的手册?我找不到它了.
我知道可以通过这种方式传递和使用块。
但是有没有办法调用一个块,仅仅通过一个块?像这样的东西?
aBlock := [ ... ].
aBlock run.
Run Code Online (Sandbox Code Playgroud)
我尝试在系统浏览器中搜索 BlockClosure 类,但找不到它。
我看到Socket.IO和Websockets通常需要NodeJS或类似的东西,但是不能在客户端上运行。
有没有可能打开使用JavaScript接受通信的端口的方法?因此,设备可以在网络上互相对话,peer2peer(充当服务器)吗?
我正在学习CLOS中的泛型函数.
由于我在教科书和网上找到的例子类型,我变得非常困惑.这些示例总是使用多个调度的事实.根据参数类型,执行不同的计算.但是,为什么参数本身从未在示例中使用过?
维基百科的示例代码
; declare the common argument structure prototype
(defgeneric f (x y))
; define an implementation for (f integer t), where t matches all types
(defmethod f ((x integer) y) 1)
(f 1 2.0) => 1
; define an implementation for (f integer real)
(defmethod f ((x integer) (y real)) 2)
(f 1 2.0) => 2 ; dispatch changed at runtime
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,您可以看到方法本身从未实际使用过x或y变量.所有这些例子都不使用变量,这是巧合吗?他们可以用吗?
此外,它写在维基百科上:
方法与类分开定义,并且它们对类槽没有特殊访问权(例如"this","self"或"protected").
好吧,所以方法没有"这个",因为它们不属于一个类.但是为什么泛型函数方法有接收器呢?接收器在类中不是类似于'this'吗?
我需要在let中定义一个函数并能够立即使用它,如下所示:
(let ((test (lambda () (print "ha"))))
(test))
Run Code Online (Sandbox Code Playgroud)
但是,由于test是一个变量(而不是函数),因此它不起作用.相反,我需要像这样运行它:
(let ((test (lambda () (print "ha"))))
(funcall test))
Run Code Online (Sandbox Code Playgroud)
在我的情况下,这是一个问题.我可以通过制作一个更改(测试)到(funcall测试)的宏来解决这个问题,但是,这不起作用,因为宏的名称将与我的情况中的方法相同(我猜这会导致(测试) )成为(funcall test)=>(funcall(funcall test))=> ......?)
有没有办法在lambda中定义一个方法并立即运行它,而不用像funcall这样的东西?
<input name="inform_me" id="inform_me" type="checkbox"> inform me
Run Code Online (Sandbox Code Playgroud)
每当我检查是否设置了此复选框时,我就会得到
布尔(真)
即使没有真正检查复选框.
这就是我的PHP的样子:
var_dump(isset($_POST['inform_me']));
Run Code Online (Sandbox Code Playgroud)
它出什么问题了?