在coffeescript中这很简单:
coffee> a = ['a', 'b', 'program']
[ 'a', 'b', 'program' ]
coffee> [_..., b] = a
[ 'a', 'b', 'program' ]
coffee> b
'program'
Run Code Online (Sandbox Code Playgroud)
es6是否允许类似的东西?
> const [, b] = [1, 2, 3]
'use strict'
> b // it got the second element, not the last one!
2
> const [...butLast, last] = [1, 2, 3]
SyntaxError: repl: Unexpected token (1:17)
> 1 | const [...butLast, last] = [1, 2, 3]
| ^
at Parser.pp.raise (C:\Users\user\AppData\Roaming\npm\node_modules\babel\node_modules\babel-core\node_modules\babylon\lib\parser\location.js:24:13)
Run Code Online (Sandbox Code Playgroud)
当然我可以用es5方式做到 -
const …Run Code Online (Sandbox Code Playgroud) 考虑以下.
if (this.Notification) {
Notification.requestPermission(function(permission) {
if (permission === 'granted') {
return new Notification('hi this is a test');
} else {
return alert("Notifications not permitted");
}
});
} else {
alert('Notifications not supported');
}
Run Code Online (Sandbox Code Playgroud)
这似乎与桌面版Chrome中的预期一致.在Firefox for Android中,此类通知会显示在Android通知栏中.
但是在Android Chrome上,它似乎会提示用户允许/禁止通知,但如果用户点击"允许"似乎没有任何结果.Android Chrome是否支持此类通知?
编辑:这与18个月前的这个问题不同- 然后window.Notification根本没有定义.现在它被定义但似乎没有做任何事情.
在.net中,AIUI int只是一个语法糖System.Int32,它是一个struct.
csharp> typeof(System.Int32).IsPrimitive
true
csharp> typeof(System.Int32).Equals(typeof(int))
true
Run Code Online (Sandbox Code Playgroud)
我在源头看到:
https://github.com/mono/mono/blob/master/mcs/class/corlib/System/Int32.cs http://referencesource.microsoft.com/#mscorlib/system/int32.cs
这System.Int32只是参考一个m_value本身的成员来定义int- 这是如何工作的?当然,我们是int根据自己定义的?那么我们如何避免循环定义呢?
我以前有一个api,其中有许多功能,所有这些都需要一个非常特殊的格式的地图.当它来记录这个API,我发现,在这些功能的每我被重复的文档字符串"与此函数被调用的地图上必须是如此这般的格式,并且在地图上的该字段表示如此这般".
所以我认为这些函数更好地记录,而我可以只记录记录.然而,似乎不可能记录记录,至少以doc宏或Marginalia 解释的方式记录.
这里建议的解决方案是"只需在记录的元数据中添加一个:doc键".
我试过(defrecord ^{:doc "Here is some documentation"} MyRecord [field1 field2])但宏观扩展这表明它没有任何影响.还defrecord返回一个java.lang.class没有实现IMeta 的实例,所以我不确定我们能给它元数据吗?
蓝鸟图书馆似乎Promise::then在承诺上自动使用两者作为"map"和"flatMap"的等价物,例如参见此示例.
var Promise;
Promise = require('bluebird').Promise;
Promise.resolve(1).then(function(x) {
return Promise.resolve(x + 1);
}).then(function(x) {
return console.log(x); // => `2` (not a promise)
});
Promise.resolve(1).then(function(x) {
return x + 1;
}).then(function(x) {
return console.log(x); // => `2`
});
Promise.reject('hi').catch(function(x) {
return Promise.reject('hi2');
}).catch(function(x) {
return console.error(x); // => `hi2` (not a promise)
});
Run Code Online (Sandbox Code Playgroud)
为什么Ruby有全局变量$$?
是否可以通过定义访问器和属性来获得类似的行为Kernel?
这是为了防止在子类中覆盖吗?
EACCES和EPERM有什么区别?EPERM 在这里描述为"不是超级用户",但我通常将其与EACCES联系起来.事实上,我不记得曾经在现实生活中看过EPERM.
假设我想Kernel.puts用Proc 来描述.我该怎么做?
我可以想到许多可能性;
Proc.new do |*args| Kernel.puts *args end
:puts.to_proc.curry[Kernel] # doesn't work, returns `nil` as puts is varargs
Run Code Online (Sandbox Code Playgroud)
但两者都很冗长.
这是我在名为Test2的项目中名为Test2.java的文件中的代码,该文件名为test2;
package test2;
import javax.swing.JFrame;
public class Test2 {
public static void main(String[] args) {
JFrame mainWindow = new HtmlWindow("<html>"
+ "<a href=\"http://stackoverflow.com\">"
+ "blah</a></html>");
mainWindow.setVisible(true);
}
}
Run Code Online (Sandbox Code Playgroud)
在同一个包中,我将此代码放在一个名为HtmlWindow.java的文件中;
package test2;
import java.awt.BorderLayout;
import java.awt.Container;
import javax.swing.JFrame;
import javax.swing.JLabel;
class HtmlWindow extends JFrame {
public HtmlWindow(String refreshGrid) {
super("blah");
setSize(300, 100);
Container content = getContentPane();
String labelText = refreshGrid;
JLabel coloredLabel = new JLabel (labelText, JLabel.CENTER);
content.add(coloredLabel, BorderLayout.NORTH);
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行项目时,我在预期位置得到一个带有"blah"字样的窗口,蓝色和下划线,但是当我将鼠标悬停在单词上时光标不会改变,当我点击它时也不会发生任何事情.
我的问题如下;
在我正在使用的clojure中:就像这样
user=> (defn cannot-take-empty [x] {:pre [((complement empty?) x)]} 1)
#'user/cannot-take-empty
user=> (cannot-take-empty #{})
AssertionError Assert failed: ((complement empty?) x) user/cannot-take-empty (NO_SOURCE_FILE:186)
Run Code Online (Sandbox Code Playgroud)
这很好,但它没有解释为什么传递空集合没有意义的商业原因.(或者包含五个以上元素的集合,或者存在两个密钥而不是另一个密钥的集合,或者当天的规则.)如果前置条件使用私有函数,这对用户来说可能更加混乱.
有没有办法向用户提供更有用的反馈,如错误信息,使用时:pre和:post?
斯卡拉多克sys.addShutdownHook说shutdown hooks are NOT guaranteed to be run.现在这是完全合理的,因为如果你向JVM发送一个SIGKILL,或者等同于Windows的JVM,JVM很难运行关闭挂钩.
但是添加的关闭钩子sys.addShutdownHook似乎永远不会运行,尽管那些与Runtime.getRuntime.addShutdownHookdo一起运行.
一个测试 -
scala> val t = new Thread { override def run = println("hi!") }
t: java.lang.Thread = Thread[Thread-4,5,main]
scala> Runtime.getRuntime.addShutdownHook(t)
scala> hi!
george@george-MacBook:~$ scala
Run Code Online (Sandbox Code Playgroud)
(跳过启动消息)
scala> val t = new Thread { override def run = println("hi!") }
t: java.lang.Thread = Thread[Thread-4,5,main]
scala> sys.addShutdownHook(t.run _)
res0: scala.sys.ShutdownHookThread = Thread[shutdownHook1,5,main]
scala> george@george-MacBook:~$
Run Code Online (Sandbox Code Playgroud)
文档说"挂钩是自动注册的:返回的值可以被忽略",所以我们不应该添加返回的线程sys.addShutdownHook
(并且无论如何都会导致抛出"IllegalArgumentException:Hook之前注册的").
此外,调用addShutdownHook返回的线程上运行似乎没有做任何事情,这是可疑的.