小编Kie*_*n E的帖子

JavaScript中有"! - "做什么?

我有这段代码(取自这个问题):

var walk = function(dir, done) {
    var results = [];

    fs.readdir(dir, function(err, list) {
        if (err)
            return done(err);

        var pending = list.length;

        if (!pending) 
            return done(null, results);

        list.forEach(function(file) {
            file = path.resolve(dir, file);
            fs.stat(file, function(err, stat) {
                if (stat && stat.isDirectory()) {
                    walk(file, function(err, res) {
                        results = results.concat(res);

                        if (!--pending)
                            done(null, results);
                    });
                } else {
                    results.push(file);

                    if (!--pending) 
                        done(null, results);
                }
            });
        });
    });
};
Run Code Online (Sandbox Code Playgroud)

我正在努力遵循它,我想我理解除了接近结尾的所有内容!--pending.在这种情况下,该命令的作用是什么?

编辑:我感谢所有进一步的评论,但这个问题已被多次回答.不管怎么说,还是要谢谢你!

javascript not-operator decrement prefix-operator

376
推荐指数
10
解决办法
5万
查看次数

一起使用Actioncable和Rails 5 API模式

我正在创建一个非常基本的聊天应用程序 我的目标是拥有一个Rails API后端,然后构建一个IOS,Android,Web和桌面客户端.这纯粹是为了探索Websockets和移动开发.

我从未使用过Actioncable,而且我对Websockets的了解非常有限.我想知道的是,如果我可以在我的Rails API上设置Actioncable并让它与Node通信(例如).

Actioncable的行为与其他任何Websocket一样吗?我可以从我的Node应用程序连接到它,ws://<host>/cable并在任何客户端和Rails之间有一个功能的pub-sub系统吗?

如果这没有意义,我很抱歉,我很难写出来:)

谢谢!

ruby-on-rails websocket node.js actioncable

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

将snake_case 更改为PascalCase 的Javascript 方法

我正在寻找一种 JS 方法,它可以在保持斜杠不变的情况下snake_case变成PascalCase

// examples:
post -> Post
admin_post -> AdminPost
admin_post/new -> AdminPost/New
admin_post/delete_post -> AdminPost/DeletePost
Run Code Online (Sandbox Code Playgroud)

等等。

我有一些东西会snake_case变成camelCase并保留斜线,但我无法将其转换为PascalCase

这是我到目前为止所得到的:

_snakeToPascal(string){
    return string.replace(/(_\w)/g, (m) => {
      return m[1].toUpperCase();
    });
  }
Run Code Online (Sandbox Code Playgroud)

任何建议表示赞赏!

编辑 - 找到解决方案

这是我最终使用的。如果您使用它,请注意this._upperFirst我正在使用它,因为我在课堂上使用它。它有点油腻,但它有效。

  _snakeToPascal(string){
    return string.split('_').map((str) => {
      return this._upperFirst(
        str.split('/')
        .map(this._upperFirst)
        .join('/'));
    }).join('');
  }

  _upperFirst(string) {
    return string.slice(0, 1).toUpperCase() + string.slice(1, string.length);
  }
Run Code Online (Sandbox Code Playgroud)

javascript regex string

5
推荐指数
3
解决办法
4263
查看次数

如何从自定义类访问“请求”对象(或类似对象)?

在我的 Rails 5 应用程序中,我内部有一个自定义类app/services,我需要访问当前的子域。

现在,各个方法可能如下所示:

...
def self.is_valid? req
  blacklist.exclude? req.subdomain
end
Run Code Online (Sandbox Code Playgroud)

但这意味着我request每次都需要通过。这不是最佳的,所以我想知道如何request从类中访问 Rails 对象。

ruby ruby-on-rails ruby-on-rails-5

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

如何使用Javascript将具有相同名称的对象分组?

使用Node,我正在实现一个ID3标签解析器来获取MP3的标题,专辑和艺术家.

现在,我需要获取我收到的信息,并按照专辑名称对它们进行分组.

在我的具体用法中,我试图从中走出来

这个:

[
  { 
    title: 'Break You',
    artist: 'Lamb Of God',
    album: 'Ashes Of The Wake' 
  },
  {
    title: 'An Extra Nail For Your Coffin',
    artist: 'Lamb Of God',
    album: 'Ashes Of The Wake' 
  },
  {
    title: 'Envy And Doubt',
    artist: 'Sever The King',
    album: 'Traitor' 
  },
  {
    title: 'Self Destruct',
    artist: 'Sever The King',
    album: 'Traitor' 
  },
  ...
]
Run Code Online (Sandbox Code Playgroud)

对此:(伪代码)

[
  'Ashes Of The Wake'{
    {
      title: 'Break You',
      artist: 'Lamb Of God'
    },
    {
      title: 'An …
Run Code Online (Sandbox Code Playgroud)

javascript json node.js electron

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

将十六进制值转换为布尔值列表

这是一个奇怪的,但坚持我在这里。给定一个十六进制值(从 00-FF),我需要将其转换为二进制,然后从那里将其转换为一个对象,其中键是每个位的“位置”,值是布尔值。

那是一个尴尬的解释。下面是一个例子:

鉴于'FF',我需要将其转换为二进制(parseInt(<hex value>, 16).toString(2)适用于该工作)。

现在 FF 已经变成了1111 1111,我需要将它转换成一个看起来像这样的对象:

{ 
  "1": true, 
  "2": true, 
  "4": true, 
  "8": true, 
  "16":true, 
  "32":true,
  "64": true, 
  "128": true
}
Run Code Online (Sandbox Code Playgroud)

再举一个例子,给定十六进制值“A6”,1010 0110它会变成:

{ 
  "1": false, 
  "2": true, 
  "4": true, 
  "8": false, 
  "16":false, 
  "32":true, 
  "64": false, 
  "128": true
}
Run Code Online (Sandbox Code Playgroud)

我唯一想做的是从二进制-> 对象的最终转换。

我知道我可以用一个简单的循环来做到这一点,但我想知道是否有任何很酷的 comp-sci 方法来实现这一点。

谢谢!

javascript

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

Ruby on Rails - 使用 before_save 回调将函数应用于多个字段?

请注意,这是一个示例,而不是我的实际用例。基本概念是我所追求的

(Ruby 版本 - 2.2.1,Rails 版本 - 4.2.4)

假设我的数据库中有emailfirst_name字段,我想使用 before_save 回调来小写。通常,我会这样做

before_save :downcase_function

...

private 

def downcase_function
  self.email = email.downcase
  self.first_name = first_name.downcase
end
Run Code Online (Sandbox Code Playgroud)

但是,这不是很灵活或可重用。如果我想将此函数添加到 last_name 字段怎么办?如果我需要跨多个模型怎么办?

我想做的是这样的事情

#pseudocode - does not work

before_save :downcase_function(:email, :first_name, :last_name)

...

private 

def downcase_function(fields)
  fields.each do |f|
    self.f = f.downcase
  end
end
Run Code Online (Sandbox Code Playgroud)

我知道这可能看起来很傻,但我没有运气。

以下是我所追求的关键事项:

  • 创建一个运行 before_save 的函数
  • 允许此函数接受参数
  • 将函数应用于指定我的参数的每个字段
  • (理想情况下)将它从任何一个模型中抽象出来,这样我就可以在任何模型中使用它,如果需要的话

非常感谢!

ruby ruby-on-rails ruby-on-rails-4

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

QML中的MacOS dock-like组件

使用QtQuick,我在转发器中有一排5个图像.我想在悬停时实现一个类似于MacOS停靠动画的动画.这是一张参考图片:

MacOS Dock

为了进一步分解,这就是我想要实现的目标.这些图像在悬停时应如下:

  • 悬停的图像扩大
  • 相邻图像会扩大,但会略微减少
  • 图像在扩展时不重叠

这是我到目前为止的代码

  Row {
    spacing: 2
    anchors.bottom: parent.bottom
    anchors.bottomMargin: 30
    anchors.horizontalCenter: parent.horizontalCenter

    Repeater {
      id: iconRepeater
      model: iconColors()
      Image {
        source: "icons/" + modelData + ".png"
        scale: mouseArea.containsMouse ? 1.5 : 1.0
        MouseArea {
          id: mouseArea
          anchors.fill: parent
          hoverEnabled: true
          onClicked: endTimer()
        }
        Behavior on scale {
          PropertyAnimation {
            duration: 75
          }
        }
      }
    }
  }
Run Code Online (Sandbox Code Playgroud)

这会扩展您悬停的图像,但我似乎也无法影响邻居.任何建议表示赞赏!

macos qt dock qml qt-quick

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