小编Sea*_*sey的帖子

为什么`send`在Ruby 2.0改进时失败了?

为什么这不起作用?

module StringRefinement
  refine String do
    def bar
      length
    end
  end
end

using StringRefinement
"abcdefghijklmnopqrstuvwxyz".send(:bar)
#NoMethodError: undefined method 'bar' for "abcdefghijklmnopqrstuvwxyz":String
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么send在这里不起作用?有没有办法动态调用细化中定义的方法?我似乎无法找到关于改进如何在Ruby 2.0中工作的完整解释.

ruby ruby-2.0

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

将单击的DOM元素的引用传递给Ember中的操作处理程序

我有一组按钮,其状态我希望与班级切换active.如果我只有一个按钮,那么我会将active类绑定到控制器属性并在单击处理程序中切换该属性:

<button {{action 'toggle'}} class="{{active}}">model.title</button>

actions: {
  toggle: function() {
    this.set('active', true);
  }
}
Run Code Online (Sandbox Code Playgroud)

但我有多个按钮,所以我不确定我能绑定什么.如果我可以将对单击按钮的引用传递给动作处理程序,那将非常有用,但我不知道如何执行此操作.

{{#each item in model}}
  <button {{action 'toggle' referenceToButton}}>model.title</button>
{{/each}}

actions: {
  toggle: function(buttonReference) {
    // add `active` class to buttonReference
  }
}
Run Code Online (Sandbox Code Playgroud)

完成此任务的最佳方法是什么?

ember.js htmlbars

9
推荐指数
3
解决办法
8980
查看次数

加入朱莉娅的正则表达式

x = r"abc"
y = r"def"
z = join([x,y], "|")

z # => r"r\"abc\"|r\"def\""
Run Code Online (Sandbox Code Playgroud)

有没有办法join(并且通常操纵)Regex仅处理正则表达式内容(即不将r修饰符视为内容的一部分).所需的输出z是:

z # => r"abc|def"
Run Code Online (Sandbox Code Playgroud)

regex julia

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

我怎样才能否定vim中的glob?

我正在尝试使用不包含"matcher"的目录中的所有文件名填充vim arglist.我可以使用包含"matcher"的文件名来填充它

args *matcher*
Run Code Online (Sandbox Code Playgroud)

是否有一种简单的方法来否定glob来获取所有不匹配的文件?

vim glob

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

使用argdo打开多个文件时,vim中没有打开语法突出显示

我经常从MacVim内部一次打开整套文件.为此,我通常使用命令:

args *PATTERN*
argdo tabedit
Run Code Online (Sandbox Code Playgroud)

这会将工作目录中与模式匹配的所有文件加载到参数列表中,然后在单独的选项卡中将它们全部打开.执行此操作时,语法突出显示不会自动打开,我必须手动设置它.我怎样才能解决这个问题?

vim

7
推荐指数
2
解决办法
1878
查看次数

如何在ZSH中将Glob转换为文件名数组(而不是路径)

我想将zsh中的glob扩展为匹配文件的文件名而不是路径.我知道我可以这样做:

paths=(/some/path/blah*blah*blah)
typeset -a filenames
for i ({1..$#paths}); do
  filenames[$i]=`basename $paths[$i]`
done
Run Code Online (Sandbox Code Playgroud)

但我认为必须有更好的方法.

zsh

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

将 Vimscript 字典导出为 JSON

我找到了一个可以让 Vim 解析 JSON 的插件。我需要将 VimScript 字典导出为 JSON。目前我只是使用:

let str = string(dict)
substitute(str, "'", '"', 'g')
Run Code Online (Sandbox Code Playgroud)

这是可行的,但当我遇到带有嵌入引号的字典时,它肯定会中断。有什么更好的办法呢?

vim json json-value

7
推荐指数
2
解决办法
1810
查看次数

Python 类型检查:Literal[False]、重载和 NoReturn

我有以下(类型化)Python 函数:

from typing import overload, Literal, NoReturn

@overload
def check(condition: Literal[False], msg: str) -> NoReturn:
    pass

@overload
def check(condition: Literal[True], msg: str) -> None:
    pass

def check(condition, msg):
    if not condition:
        raise Exception(msg)
Run Code Online (Sandbox Code Playgroud)

Pyright 类型检查器抱怨:

Overloaded function implementation is not consistent with signature of overload 1
  Function return type "NoReturn" is incompatible with type "None"
    Type cannot be assigned to type "None"
Run Code Online (Sandbox Code Playgroud)

我对此感到困惑 - Pyright 显然无法确定check如果条件是 则总是会抛出错误False。我该如何按摩才能使其发挥作用?

python pyright

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

在Ruby中从排序数组创建嵌套哈希 - 递归group_by

我有一个对象数组,已根据这些对象的几个属性进行排序.按优先顺序,这些属性是foo,bar和baz.这意味着首先按对象排序对象foo; 那么具有相同foo值的子序列按以下顺序排序bar; 然后那些具有相同foo和bar值的那些被排序baz.

我想将其转换为反映此分组的嵌套哈希.基本上我在寻找递归Enumerable#group_by.键将是的值foo,bar和baz; 值可以是子哈希值,也可以是对象的数组.这是一个例子:

[obj1, obj2, ... objn].group_by_recursive(:foo, :bar, :baz)
#=> {
      foo_val_1 => {
        bar_val_1 => {
          baz_val_1 => [
            obj1,
            obj2,
            obj3
          ],
          baz_val_2 => [
            obj4,
            obj5
          ]
        },
        bar_val_2 => {
          baz_val_1 => [
            obj6,
            obj7
          ],
          baz_val_2 => [
            obj8
          ]
        },
      },
      foo_val_2 => {
        ...
      }, …
Run Code Online (Sandbox Code Playgroud)

ruby

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

连续二维切片上的 Numpy 矢量化函数

我有一个 3D numpy 数组。我想通过在沿轴的连续 2d 切片上执行函数并将生成的切片堆叠在一起来形成一个新的 3d 数组。显然,有很多方法可以做到这一点;我想以最简洁的方式做到这一点。我认为这是可能的numpy.vectorize,但这似乎产生了一个迭代数组中每个值的函数,而不是沿第一个轴移动的二维切片。

基本上,我想要看起来像这样的代码:

new3dmat = np.vectorize(func2dmat)(my3dmat)
Run Code Online (Sandbox Code Playgroud)

并完成与此相同的事情:

new3dmat = np.empty_like(my3dmat)
for i in range(my3dmat.shape[0]):
  new3dmat[i] = func2dmat(my3dmat[i])
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

python arrays numpy vectorization

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

标签 统计

vim ×3

python ×2

ruby ×2

arrays ×1

ember.js ×1

glob ×1

htmlbars ×1

json ×1

json-value ×1

julia ×1

numpy ×1

pyright ×1

regex ×1

ruby-2.0 ×1

vectorization ×1

zsh ×1