小编wea*_*ish的帖子

如何计算列表项的出现次数?

给定一个项目,如何在Python的列表中计算它的出现次数?

python list count

1417
推荐指数
20
解决办法
151万
查看次数

Ruby中的Block与Smalltalk相比

Ruby中的块是什么意思?它与Smalltalk看起来类似,但您无法向其发送消息.

例如,在smalltalk中:

[:x | x + 3] value: 3
Run Code Online (Sandbox Code Playgroud)

返回6.但是在红宝石中:

{|x| x + 3}.call 3
Run Code Online (Sandbox Code Playgroud)

将导致SyntaxError.

好吧,你可以在ruby中将消息传递给lambda:

irb(main):025:0> ->(x){x+3}.call 3
=> 6
Run Code Online (Sandbox Code Playgroud)

所以在Ruby中,块不是一个块,但lambda是一个块?这是真的?我的意思是,红宝石lambda和smalltalk块之间有什么区别吗?如果这是真的,那么什么是红宝石块呢?

更新:

从下面的评论和答案,以及一些谷歌搜索,我想我对Ruby块有了更多的了解.在Ruby中,通常一段代码会计算一个值,而每个值都是一个对象.但是,块不会评估值.所以这不是一个对象.相反,它可以作为对象的一部分.例如,在{| x |中 x + 3}可以作为对象proc {| x |的一部分 x + 3}.

但它确实让我困惑.在smalltalk中,几乎每个表达式都可以分为对象(绑定到变量是例外).在Ruby中似乎有更多例外.

ruby smalltalk

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

如何使用distutils处理配置文件以尊重unixen的FHS?

假设我们有一个名为的程序foo.

如果使用绝对路径:

setup(...,
      data_files=[...,
              ('/etc', ['foo.cfg'])]
)
Run Code Online (Sandbox Code Playgroud)

然后foo$ python setup.py --prefix=/usr/local,我们将有/etc/foo.cfg.但/usr/local/etc/foo.cfg根据FHS,我们应该有.

如果我们使用相对路径怎么办?

setup(...,
      data_files=[...,
              ('etc', ['foo.cfg'])]
)
Run Code Online (Sandbox Code Playgroud)

然后,如果我们使用默认安装路径,即安装到/ usr,我们将拥有/usr/etc/foo.cfg.再次运气不好.

那怎么做对了?

PS为避免使问题更复杂,我们假设此程序 foo无法在非unix环境下运行.

python distutils fhs

10
推荐指数
2
解决办法
2984
查看次数

Lua相当于virtualenv?

在lua中有类似python的virtualenv吗?

所以我可以在沙盒环境中安装所有必需的lua模块/岩石.这对测试很有用,因为我不会搞乱系统范围的lua模块或其他lua项目的环境.

自从支持自给式安装以来,luarocks看起来很有前景.但是我很感兴趣,如果有像virtualenv这样的工具可以自动创建,维护和切换沙盒环境.

lua virtualenv

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

如何使用Intellij插件创建自定义实时模板

我想创建一个可以在我的插件中使用的自定义实时模板.我知道如何使用"设置"对话框创建自定义实时模板,但我希望能够将实时模板作为插件的一部分进行分发:

  • 如何在插件中定义实时模板
  • 在应用程序中注册它的入口点在哪里?

谢谢.

intellij-idea intellij-plugin

7
推荐指数
1
解决办法
1222
查看次数

无法理解Fish shell中的命令替换

在sh:

~$ `echo ls`
bin/  Desktop/
Run Code Online (Sandbox Code Playgroud)

但在鱼类:

fish: Illegal command name “(echo ls)”
~% (echo ls)
Run Code Online (Sandbox Code Playgroud)

(请注意,错误消息显示在命令行上方.)

~% echo (echo ls)
ls
~% eval (echo ls)
bin/  Desktop/

fish: Illegal command name “(echo ls)”
exec (echo ls)
     ^
~% exec (echo ls)
Run Code Online (Sandbox Code Playgroud)

看来命令替换只能作为命令的参数,而不是命令本身?为什么?

好吧,帮助文档确实说

如果参数包含一组括号,则括号括起的文本将被解释为命令列表.

但是,为什么呢?

bash shell command-line fish

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

GNU grep正则表达式`[一 - 十]`(一到十)与汉字四(四)不符

这个命令

$ echo '??????????' | grep -oE '[?-?]'
Run Code Online (Sandbox Code Playgroud)

输出:

?
?
?
?
?
?
?
?
?
Run Code Online (Sandbox Code Playgroud)

正则表达式[?-?](一到十个)预计将匹配中国数字.如示例所示,除了中文字符?(四个)之外,它与从1到10的每个中文数字匹配.

为什么?

这是一个错误还是一个笑话?

我可能认为这是一个笑话,因为在中文'四'(四)听起来像'事'(事物).事实上,在一些中文方言中,它们共享相同的发音.因此'一二三五六七八十'(一二三五六七八九)暗示'没四'(没有四),即'没事'(没有东西).

BTW,我使用的grep版本:

GNU grep 2.5.4
Run Code Online (Sandbox Code Playgroud)

regex grep cjk

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

在google-diff-match-patch中做差异时如何忽略某些字符?

我正在使用google-diff-match-patch来比较自然语言中的纯文本。

如何使google-diff-match-patch忽略某些字符?(一些无关紧要的细微差别。)

例如,给定text1:

give me a cup of bean-milk. Thanks.
Run Code Online (Sandbox Code Playgroud)

和text2:

please give mom a cup of bean milk!  Thank you.
Run Code Online (Sandbox Code Playgroud)

(请注意,在“谢谢”之前有两个空格字符。)

google-diff-match-patch输出如下所示:

[please] give m(e)[om] a cup of bean(-)[ ]milk(.)[!] Thank(s)[ you].
Run Code Online (Sandbox Code Playgroud)

看来google-diff-match-patch仅忽略不同数量的空格。

我怎样才能告诉google-diff-match-patch也忽略像这样的字符[-.!]

预期结果将是

[please] give m(e)[om] a cup of bean-milk. Thank(s)[ you].
Run Code Online (Sandbox Code Playgroud)

谢谢。

diff text-processing nlp

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

何时在 Typed Racket 中使用 `form:`?

ts-guide说:

除了:形式之外,几乎所有球拍的绑定形式都有允许指定类型的对应形式。

但它没有说明何时使用哪一个。

并且ts-referenceform:是遗留的,为了向后兼容。

但是在ts-guide中,form:很多地方都用到了。

所以: v tform:? 那么form呢?

例如:

; form:
(define: (id [z : Number]) : Number z)

; : v t + form
(: id (-> Number Number))
(define (id z) z)

; form (it seems recent versions of Racket add this?)
(define (id [z : Number]) : Number z)
Run Code Online (Sandbox Code Playgroud)

legacy annotations racket typed-racket

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

如何在Kotlin中指定duck typing(隐式接口)泛型?

例如

// Not valid Kotlin code.
fun <T : Summable> myFunction ...
Run Code Online (Sandbox Code Playgroud)

T : Summable表示任何类型T支持+运算符,即.plus定义了一个方法.

kotlin

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

如何处理reStructuredText中重复的目标名称?

例:

foo is a tool used to do foo.

Download_

.. _Download: http://example.com/foo

blah blah blah (omit a lot of paragraphs)

bar is another tool to do bar.

Download_

.. _Download: http://example.com/bar
Run Code Online (Sandbox Code Playgroud)

由于Download指向不同的URL,docutilus给出以下错误报告:

Duplicate target name, cannot be used as a
unique reference: "Download".
Run Code Online (Sandbox Code Playgroud)

在降价促销中,我可以为这两个指定不同的ID Download

[Download][download-foo]
[download-foo]: http://example.com/foo
[Download][download-bar]
[download-bar]: http://example.com/bar
Run Code Online (Sandbox Code Playgroud)

如何在reStructuredText中做类似的事情?

restructuredtext

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

Haskell的绑定运算符(>> =)是否等同于F#的正向管道运算符(|>)?

输入Haskell绑定运算符的签名(>> =):

m a -> (a -> m b) -> m b
Run Code Online (Sandbox Code Playgroud)

输入F#的前向管道运算符(|>)的签名:

'a -> ('a -> 'b) -> 'b
Run Code Online (Sandbox Code Playgroud)

他们看起来很相似 考虑到F#的不纯性,|>Haskell中的等价运算符是>>=

例如:

哈斯克尔:

getLine >>= putStrLn
Run Code Online (Sandbox Code Playgroud)

F#:

stdin.ReadLine() |> stdout.Write
Run Code Online (Sandbox Code Playgroud)

monads f# haskell pipeline bind

4
推荐指数
2
解决办法
561
查看次数

Python在循环中支持`else`.Ruby中有类似的功能吗?

在Python中,除非循环中断,否则将执行else块:

for person in people:
    if is_a_coder(person): break
# ... more code ...
else: # nobreak
    print('There is no coder.')
Run Code Online (Sandbox Code Playgroud)

我怎么能在Ruby中做到这一点?

ruby python loops if-statement break

2
推荐指数
1
解决办法
92
查看次数