小编uzo*_*uzo的帖子

为什么要夸大其他JVM Lisps:Kawa,Armed Bear还是SISC?

在Clojure到达现场之前,JVM已经有三个Lisps:Kawa,Armed BearSISC.

那些Lisps留下的Clojure填补了什么空白?

lisp jvm clojure kawa

66
推荐指数
8
解决办法
1万
查看次数

为什么显性回报会对Proc产生影响?

def foo
  f = Proc.new { return "return from foo from inside proc" }
  f.call # control leaves foo here
  return "return from foo" 
end

def bar
  b = Proc.new { "return from bar from inside proc" }
  b.call # control leaves bar here
  return "return from bar" 
end

puts foo # prints "return from foo from inside proc" 
puts bar # prints "return from bar" 
Run Code Online (Sandbox Code Playgroud)

我认为这个return关键字在Ruby中是可选的,return无论你是否请求它,你总是在想.鉴于这种情况,我觉得很奇怪,foobar有不同的输出由事实来确定foo包含一个明确的returnProc …

ruby return proc-object

51
推荐指数
3
解决办法
1万
查看次数

Clojure是否从初学者的角度更接近Scheme或Common Lisp?

如果我想学习Clojure,我应该从学习Scheme或Common Lisp开始吗?

或者Clojure与这两者有什么不同,我应该开始自己学习Clojure?

lisp scheme clojure

27
推荐指数
3
解决办法
5675
查看次数

'yield self'和instance_eval一样吗?

如果用instance_eval定义Foo,有什么区别吗:..

class Foo
    def initialize(&block)
      instance_eval(&block) if block_given?
    end
  end
Run Code Online (Sandbox Code Playgroud)

...或者'屈服自我':

class Foo
  def initialize
    yield self if block_given?
  end
end
Run Code Online (Sandbox Code Playgroud)

无论哪种情况,您都可以这样做:

x = Foo.new { def foo; 'foo'; end }
x.foo 
Run Code Online (Sandbox Code Playgroud)

所以' yield self'意味着Foo.new之后的块总是在Foo类的上下文中进行评估.

它是否正确?

ruby

20
推荐指数
3
解决办法
6723
查看次数

当你在Clojure REPL中输入"hello,world"时,为什么会说'nil'?

我把它键入Clojure REPL(使用enclojure Netbeans插件):

user=> "hello, world"
"hello, world"
nil
Run Code Online (Sandbox Code Playgroud)

什么是零?

clojure

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

定义我的下一个提交添加到哪个分支

比方说,我创建两个banches 在同一时间:

hg branch branch-A
hg branch branch-B
Run Code Online (Sandbox Code Playgroud)

如何将我的下一次提交发送到branch-A而不是branch-B

mercurial branch

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

为什么"需要rubygems"是"错误的"?

根据这篇文章,要求rubygems是一个反模式.

require 'rubygems'
Run Code Online (Sandbox Code Playgroud)

这个论点似乎归结为:

当我使用你的库,部署你的应用程序,或运行你的测试我可能不想使用rubygems.当您在代码中需要"rubygems"时,您将无法做出决定.我不能不要求rubygems,但你不能首先要求它.

但是,当您与其他人一起创建和共享代码库时,您所要求的任何Ruby库都无法进行相同的论证吗?

ruby rubygems anti-patterns

9
推荐指数
2
解决办法
644
查看次数

在一个街区内收益是什么意思?

  def any?
    if block_given?
      method_missing(:any?) { |*block_args| yield(*block_args) }
    else
      !empty?
    end
  end
Run Code Online (Sandbox Code Playgroud)

在ActiveRecord的代码中,块中存在的yield语句的目的是什么?

ruby

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

请在Mercurial中建议更好的工作流程

我是Mercurial的新手,我开始意识到我的基本工作流程可能不是最有效的工作方式,因为我经常执行提交,而且功能改进非常小,以至于我需要更早地找到一些步骤恢复,这是非常困难的.

这是我在Mercurial中设置项目并完成第一次提交后所做的事情.

  1. 对文件进行一些更改并使其进入一个小改进正在运行的状态
  2. hg commit -m "improvement A works"
  3. 对同一个文件进行一些更改,并使其进入下一个小改进工作的状态.
  4. hg commit -m "improvement B works"
  5. 检查是否所有次要改进都会使单个次要功能正常工作.
  6. hg commit -m "feature A works"

如果我发现"改进A"中出现了错误,我打开历史记录(使用Netbeans Mercurial可视插件)并将一些代码复制并粘贴回我当前版本并从那里重新开始.

这似乎不是一个好的系统 - 我会很感激任何建议.

workflow mercurial netbeans

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

在两个分支之间来回跳转的正确方法?

如果我创建一个分支:

hg branch branch-A
Run Code Online (Sandbox Code Playgroud)

并承诺:

hg commit -m "improvement A-1"
Run Code Online (Sandbox Code Playgroud)

然后创建第二个分支:

hg branch branch-B
Run Code Online (Sandbox Code Playgroud)

并承诺:

hg commit -m "improvement B-1"
Run Code Online (Sandbox Code Playgroud)

如果我想将我的下一个更改添加到branch-A,我只需输入:

hg branch branch-A
Run Code Online (Sandbox Code Playgroud)

像以前一样承诺:

hg commit -m "improvement A-2"
Run Code Online (Sandbox Code Playgroud)

mercurial branch

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