小编Geo*_*mms的帖子

解构以获取es6中数组的最后一个元素

在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)

destructuring ecmascript-6

93
推荐指数
10
解决办法
6万
查看次数

Android上的Chrome上会显示通知的位置?

考虑以下.

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)

JSFiddle.

这似乎与桌面版Chrome中的预期一致.在Firefox for Android中,此类通知会显示在Android通知栏中.

但是在Android Chrome上,它似乎会提示用户允许/禁止通知,但如果用户点击"允许"似乎没有任何结果.Android Chrome是否支持此类通知?

编辑:与18个月前的这个问题不同- 然后window.Notification根本没有定义.现在它被定义但似乎没有做任何事情.

javascript notifications android google-chrome

16
推荐指数
1
解决办法
1421
查看次数

.net中的原始类型

在.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根据自己定义的?那么我们如何避免循环定义呢?

.net c# int clr primitive-types

14
推荐指数
1
解决办法
2312
查看次数

clojure中的记录文档

我以前有一个api,其中有许多功能,所有这些都需要一个非常特殊的格式的地图.当它来记录这个API,我发现,在这些功能的每我被重复的文档字符串"与此函数被调用的地图上必须是如此这般的格式,并且在地图上的该字段表示如此这般".

所以我认为这些函数更好地记录,而我可以只记录记录.然而,似乎不可能记录记录,至少以doc宏或Marginalia 解释的方式记录.

这里建议的解决方案是"只需在记录的元数据中添加一个:doc键".

我试过(defrecord ^{:doc "Here is some documentation"} MyRecord [field1 field2])但宏观扩展这表明它没有任何影响.还defrecord返回一个java.lang.class没有实现IMeta 的实例,所以我不确定我们能给它元数据吗?

  • 如何记录记录?
  • 记录是否适用于此处?

documentation record clojure

12
推荐指数
1
解决办法
1198
查看次数

在javascript中展平承诺

蓝鸟图书馆似乎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)

这是es6 Promise API的合同吗?例如,我在这里这里都没有提到这种扁平化行为.

javascript promise ecmascript-6 es6-promise

11
推荐指数
1
解决办法
2195
查看次数

Ruby全局变量对什么有用?

为什么Ruby有全局变量$$

是否可以通过定义访问器和属性来获得类似的行为Kernel

这是为了防止在子类中覆盖吗?

ruby global-variables

9
推荐指数
1
解决办法
102
查看次数

EACCES和EPERM之间的区别

EACCES和EPERM有什么区别?EPERM 在这里描述为"不是超级用户",但我通常将其与EACCES联系起来.事实上,我不记得曾经在现实生活中看过EPERM.

c language-agnostic unix posix errno

9
推荐指数
1
解决办法
6000
查看次数

在ruby中将类方法转换为proc的惯用方法

假设我想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)

但两者都很冗长.

ruby

6
推荐指数
1
解决办法
3230
查看次数

JLabels中的超链接

这是我在名为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"字样的窗口,蓝色和下划线,但是当我将鼠标悬停在单词上时光标不会改变,当我点击它时也不会发生任何事情.

我的问题如下;

  • 是否可以在jLabels中添加超链接?
  • 如果是这样,我做错了什么,或者程序运行不正常?
  • 如果没有,什么是好的选择?我不使用JButtons的原因是,最终我想创建一个任意数量的超链接的网格,我希望超链接是图像,虽然JButtons可以有图像,我不希望超链接到看起来像"按钮".我想我可以使用不可编辑的JEditorPane?

java swing jlabel hyperlink

5
推荐指数
1
解决办法
1381
查看次数

更可读的消息:pre和:post?

在我正在使用的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?

contracts clojure

5
推荐指数
1
解决办法
116
查看次数

Scala关机挂钩永远不会运行?

斯卡拉多克sys.addShutdownHookshutdown 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返回的线程上运行似乎没有做任何事情,这是可疑的.

scala

4
推荐指数
1
解决办法
7519
查看次数