小编use*_*603的帖子

返回时退出函数

我有一个数组。我有一个函数可以检查数组是否包含数字“2”。

如果找到该数字,我希望该函数返回 true。如果不是,它应该返回 false。

我写了这个:

function hasTwo(arr) {
    arr.forEach((x) => {
        if (x === 2) {
            console.log("Two!")
            return true
        }
    })
    console.log("No two :(")
    return false
}

let arr = [1,2,3,4,5,6]    
console.log(hasTwo(arr))
Run Code Online (Sandbox Code Playgroud)

我的期望是,在第二次 forEach 迭代中,if 条件将得到满足,函数将返回 true。

但是,这是控制台输出:

Two!
No two :(
false
Run Code Online (Sandbox Code Playgroud)

我相信第一个 return 语句是从条件块返回,而不是从封闭函数返回。(是对的吗?)

我用变量重写了函数来存储返回值:

function hasTwo(arr) {

let result = false

    arr.forEach((x) => {
        if (x === 2) {
            console.log("Two!")
            result = true
        }
    })

    return result
}
Run Code Online (Sandbox Code Playgroud)

但如果满足 x === 2 条件,我看不出该函数继续存在的意义。有没有办法返回一个值并立即退出函数?

javascript

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

Rails:当指向"tmp/caching-dev.txt"时,Rails.root.join的正确用法是什么?

我正在建立一个新的Rails项目,在给Rubocop初步整理之后,我只剩下一个冒犯了.

鲁博普抱怨道:

config/environments/development.rb:16:6: C: Please use Rails.root.join('path', 'to') instead.
  if Rails.root.join("tmp/caching-dev.txt").exist?
Run Code Online (Sandbox Code Playgroud)

我看到它Rails.root返回当前项目的路径.所以我试过了

if File.join(Rails.root, "tmp/caching-dev.text").exist?
Run Code Online (Sandbox Code Playgroud)

代替.但是,Rubocop抱怨道:

config/environments/development.rb:17:6: C: Please use Rails.root.join('path', 'to') instead.
  if File.join(Rails.root, "tmp/caching-dev.text").exist?
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)

有什么意义pathroot争论?肯定Rails.root是路径?!

ruby ruby-on-rails rubocop

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

Homebrew:如何安装 PHPUnit 6.5?

我正在尝试安装 php 单元版本 6.5。

我已经安装了 7.0.1,并尝试使用以下命令安装 phpunit 6.5 版本:

brew install phpunit@6.5
Run Code Online (Sandbox Code Playgroud)

Brew 告诉我安装了旧版本,但phpunit --version版本是 7.0.1。

尝试brew switch phpunit 6.5,我收到消息:

Error: phpunit does not have a version "6.5" in the Cellar.
Versions available: 7.0.1
Run Code Online (Sandbox Code Playgroud)

我需要采取哪些步骤才能将版本切换到 6.5?

homebrew phpunit

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

Ruby:如何在数组中的每个项目之间插入单个值?

我有一个数组[1,2,3],我想true在每个项目之间插入相同的值 ( ),使其变为:

#=> [1, true, 2, true, 3, true] 
Run Code Online (Sandbox Code Playgroud)

我目前的方法有点啰嗦:

[1,2,3].zip(Array.new(3, true)).flatten
Run Code Online (Sandbox Code Playgroud)

谁能建议一种更优雅的方法来做到这一点?

ruby arrays

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

Rails 6:未定义 Rails

我正在尝试使用 UJS 触发表单提交:

  <%= f.file_field :profile_image,
                   direct_upload: true,
                   accept: 'image/png,image/gif,image/jpeg',
                   onchange: "Rails.fire(this.form, 'submit')"
  %>
Run Code Online (Sandbox Code Playgroud)

但是,我在 JS 控制台中看到以下错误:

ReferenceError: Can't find variable: Rails
Run Code Online (Sandbox Code Playgroud)

应用布局文件指向应用JS包:

<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
Run Code Online (Sandbox Code Playgroud)

我可以看到它通过控制台日志的输出加载:

console.log('Application pack loaded')
require("@rails/ujs").start()
require("turbolinks").start()
require("@rails/activestorage").start()
require("channels")
require("@rails/activestorage").start()
Run Code Online (Sandbox Code Playgroud)

据我了解,rails ujs 应该公开Rails对象。那正确吗?

为什么该Rails变量对浏览器不可用?我需要做什么来确保它是?

ruby-on-rails rails-ujs ruby-on-rails-6

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