小编bgu*_*ach的帖子

使用函数作为字典

我正在设计一个小型库,并试图尽可能地保持API,使用函数作为字典/对象本身的想法看起来很吸引人.

这个想法是能够通常调用一个函数:

fn('hello', 'some other extra info to be processed', etc...)
Run Code Online (Sandbox Code Playgroud)

此调用将处理信息,然后将其存储在某处.可以在某些条件下访问此处理过的信息(不是典型的用例),以这种方式获取信息会很棒:

fn['hello']
//-> some stuff
Run Code Online (Sandbox Code Playgroud)

例如,在python中,[]运算符重载会非常容易,但是AFAIK在JS中没有一种简单可靠的方法可以在大多数环境中工作(代理似乎可以做到这一点,但我们还没有到目前为止).由于用户可以输入任何值,因此不能选择getter和setter.

因此,我留下了函数对象的设置属性,这似乎很糟糕,因为我可能会覆盖函数的原始属性,例如:

  • apply
  • prototype
  • __proto__

然而,JS世界中的许多东西都是hacky,我们很乐意每天都这样做.问题是:这是不安全的,会导致数千只小猫死亡吗?

javascript

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

EmberJS:是否可以仅保存修改过的对象?

我有一个小而相当标准的应用程序:

  • 从服务器获取对象
  • 渲染对象并允许对它们进行一些编辑.如果这很重要,则此编辑仅影响DS.hasMany属性.
  • 提供保存回服务器(它不应该自动发生,仅在用户请求时)

app控制器处理一个save事件,然后我存储了这些东西.代码如下所示:

import Ember from 'ember';

export default Ember.Controller.extend({
    actions: {
        save() {
            this.store.peekAll('object').forEach(obj => {
                obj.save();
            });
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

这会为本地加载的每个对象发出PUT请求.它工作正常,但它有点蛮力.相反,我想只保存修改过的对象.

我已尝试使用dirtyType,但它返回的undefined内部.forEach,还有hasDirtyAttributes,但它false总是返回.

我可以构建自己的修改对象缓存,但这将是很多工作和容易出错.有没有处理这种情况的标准方法?提前致谢.

javascript ember.js ember-data

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

嵌套命令中的 Git 别名

我知道如何创建简单的别名,但是有一个非常有用的命令可以从磁盘中取消暂存已删除的文件,但我无法使其工作。

git rm $(git ls-files --deleted)

(从这里Removing multiple files from a Git repo that has been removed from disk

我试过:

git config --global alias.cleandeleted 'rm $(git ls-files --deleted)'
Run Code Online (Sandbox Code Playgroud)

但是当我写:

git cleandeleted
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

error: unknown option `deleted)'
usage: git rm [options] [--] <file>...

    -n, --dry-run         dry run
    -q, --quiet           do not list removed files
    --cached              only remove from the index
    -f, --force           override the up-to-date check
    -r                    allow recursive removal
    --ignore-unmatch      exit with a zero status even if nothing …
Run Code Online (Sandbox Code Playgroud)

git alias

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

使用断言控制流程

我想检查一个单词是否有尾随分号。我有一个长字符串中单词的位置,我想检查该位置的字符是否start of word + length of word:。该单词可能是字符串中的最后一个单词,因此尝试获取下一个字符将引发IndexException

我有三个想法:

1)检查我们是否不在字符串的末尾,然后检查它是否不是分号

semicolon_pos = pos_word + len(word) # Possible position
if semicolon_pos < len(long_string) and long_string[semicolon_pos] == ':':
    # do something...
else:
    # do something else
Run Code Online (Sandbox Code Playgroud)

不是通常认为的 pythonic

2) Try- except 分号提取和分号的等式

semicolon_pos = pos_word + len(word) # Possible position
try:
   if long_string[semicolon_pos] == ':':
      # Do something
   else:
      # do something else (which is the same as in the except clause)

except IndexError:
    # do something else …
Run Code Online (Sandbox Code Playgroud)

python exception control-flow

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