小编Lai*_*uan的帖子

如何在Ruby中实现枚举器?

例如:

a = [1,2,3,4,5]
a.delete_if { |x| x > 3 }
Run Code Online (Sandbox Code Playgroud)

相当于:

a = [1,2,3,4,5]
a.delete_if.each.each.each.each { |x| x > 3 }
Run Code Online (Sandbox Code Playgroud)

我知道a.delete_if返回一个枚举器.但它是如何知道它应该在each块返回true 时删除对象?如何delete_if手动实现(以及在Ruby中)?

ruby enumerator

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

Javascript的赋值操作是复制引用?

基本的例子:

var b = 10;
var c = b;
b++;
console.log(b,c);

>> 11 10
Run Code Online (Sandbox Code Playgroud)

c看起来像是副本b.

但在另一个案例中:

var x = {};
var y = x;
x.abc = 10;
console.log(x.abc, y.abc);

>> 10 10
Run Code Online (Sandbox Code Playgroud)

为什么y不是副本x,而是指向同一实例的引用x指向?

此外,我猜测b++创建了另一个实例,因此b指向新实例但c指向旧实例.然而...

var u = 10;
setTimeout(function() {
  console.log(u);
}, 10000)
u++;

>> 11
Run Code Online (Sandbox Code Playgroud)

如果u++创建一个新实例,那么u匿名函数里面应该指向旧的u,不应该吗?

javascript reference variable-assignment

6
推荐指数
3
解决办法
3023
查看次数

如何设置.mode和.headers的默认值来控制SQLite中的输出格式?

通常我使用这些设置来SQLite输出漂亮的结构:

sqlite> .mode column
sqlite> .headers on
Run Code Online (Sandbox Code Playgroud)

但是如何使它们成为默认设置?

sqlite

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

CPLUS_INCLUDE_PATH不起作用

我已将环境变量设置CPLUS_INCLUDE_PATHboost.

>echo $CPLUS_INCLUDE_PATH
boost
Run Code Online (Sandbox Code Playgroud)

但它根本不起作用.

>g++ parse_utils.cpp
parse_utils.cpp:1:34: fatal error: boost/lexical_cast.hpp: No such file or directory
Run Code Online (Sandbox Code Playgroud)

.hpp是在这条道路.

>g++ parse_utils.cpp -Iboost 
(work well)
Run Code Online (Sandbox Code Playgroud)

我认为CPLUS_INCLUDE_PATH相当于-I选项?

>g++ --version
g++ (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
Run Code Online (Sandbox Code Playgroud)

gcc include

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

coffeescript的连接中间件?

是的,我知道connect-assets.但我希望coffeescript可以根据要求编译文件.就像stylus中间件一样.

app.use(stylus.middleware(
  src: __dirname + "/assets",
  dest: __dirname + "/public"
))
Run Code Online (Sandbox Code Playgroud)

那么......有什么方法可以这样运作吗?

编辑:我也知道connect.compiler.但它已被删除在最新版本connect.

connect node.js coffeescript express

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

本地Rails与域名?

可能重复:
如何为rails应用程序指定Web地址?

我想在我的机器上启动2个Rails.我可以这样做:

rails s -p 3000
rails s -p 3001
Run Code Online (Sandbox Code Playgroud)

并通过localhost:3000和访问它们localhost:3001.

但是,有没有办法来引导他们在foo.example.combar.example.com?我并不真正拥有域名example.com,我只希望我的本地程序通过这个假域名而不是localhost来访问它们.

webserver ruby-on-rails

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

实现没有类型参数的通用接口

假设我有一个A泛型类型的接口:

public interface A<T> {
    T getT();
}
Run Code Online (Sandbox Code Playgroud)

以及B实现它的类:

public class B implements A {
    public Integer getT() { return 1; }
}
Run Code Online (Sandbox Code Playgroud)

...但是没有给它一个类型参数.

这里发生了什么?是否A可以推断A<Integer>?是否可以强制用户使用implements语句(如B implements A<Integer>)写入类型参数?

java generics interface

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

Scala:代码仅在调试时运行(#ifdef等效?)

在C++中我可以写:

#ifdef DEBUG
cout << "Debugging!" << endl;
Run Code Online (Sandbox Code Playgroud)

Scala中有没有相应的东西?

debugging scala compiler-directives scala-macros

6
推荐指数
3
解决办法
1564
查看次数

scala.language.existentials的scaladoc在哪里?

当我尝试编写一个接受any Class[_]作为参数的类时:

case class A(klass: Class[_])
Run Code Online (Sandbox Code Playgroud)

我收到了这个错误:

test.scala:1:警告:推断的存在类型选项[类[_ $ 1]] forSome {type $ 1},不能用通配符表示,应该通过使隐式值scala.language.existentials可见来启用.这可以通过添加import子句'import scala.language.existentials'或通过设置编译器选项-language:existentials来实现.有关为何应明确启用该功能的讨论,请参阅scala文档以获取值scala.language.existentials.case class A(klass:Class [ ])^找到一个警告

我愿意知道为什么它不起作用.但是"scala docs for value scala.language.existentials"在哪里?我用谷歌搜索"scaladoc scala.language.existentials",但得到了一些我无法理解的线索.

澄清:我知道实现这样一个类的"正确"方法是:

case class A[T](klass: Class[T])
Run Code Online (Sandbox Code Playgroud)

但我想知道警告信息的含义.

scala existential-type

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

为什么有些lib定义了自己的集合?

例如,在Jsoup中,他们定义了一个类Element来收集Element.

定义包含大量A(s)的A和As类是很常见的.但为什么?为什么我们不使用ArrayList或其他什么?

java oop collections

5
推荐指数
2
解决办法
121
查看次数