小编Igg*_*ggy的帖子

RSpec 种类?返回错误结果

我正在寻求学习 RSpec。目前我正在研究内置匹配器

我有点困惑expect(actual).to be_kind_of(expected)

relishapp网站上,它说的行为be_kind_of

obj.should be_kind_of(type):调用 obj.kind_of?(type),如果 type 位于 obj 的类层次结构中或者是一个模块并且包含在 obj 的类层次结构中的类中,则返回 true。

APIdock 给出了这个例子

module M;    end
class A
  include M
end
class B < A; end
class C < B; end

b.kind_of? A       #=> true
b.kind_of? B       #=> true
b.kind_of? C       #=> false
b.kind_of? M       #=> true
Run Code Online (Sandbox Code Playgroud)

但是,当我在 RSpec 上测试它时,它会返回 false:

module M;    end
class A
  include M
end
class B < A; end
class C < …
Run Code Online (Sandbox Code Playgroud)

rspec ruby-on-rails

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

在Ruby中将字符串转换为符号和整数的哈希值

我想转换这种格式的任何给定字符串:a = "a=2, b=3, c=4, d=5"到符号(键)和整数(值)的哈希.

{:a=>2, :b=>3, :c=>4, :d=>5}在这种情况下,预期输入.

这就是我所拥有的:

def hash_it(str)
  str.split(", ").map{|s| s.split("=")}.to_h
end
Run Code Online (Sandbox Code Playgroud)

hash_it(str)回报{"a"=>"2", "b"=>"3", "c"=>"4", "d"=>"5"}.关闭,但不完全.我不知道如何将键转换为符号和值为整数.我可以单独转换它们:

str.split(", ").map{|s| s.split("=")}.map{|n| n[0].to_sym}
#=> [:a, :b, :c, :d]
str.split(", ").map{|s| s.split("=")}.map{|n| n[1].to_i}
#=> [2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)

但我不能把它们放在一起用于预期的目的.

如何将格式中的任何给定字符串转换"a=2, b=3, c=4, d=5"为symbol-inter键值的哈希值{:a=>2, :b=>3, :c=>4, :d=>5}

ruby hash

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

Ruby中不区分大小写的正则表达式匹配

我有一个阵列,上面有电力别动队颜色列表, rangers = ["red", "blue", "yellow", "pink", "black"]

我想验证给定的参数是否与电力别动队颜色匹配,但问题是该参数可能以不同的情况出现(大写,小写,混合)。

例:

def validate_rangers(color)
  rangers = ["red", "blue", "yellow", "pink", "black"]
  rangers.grep(color).any?
end

validates_rangers("red") #=> true
Run Code Online (Sandbox Code Playgroud)

validates_rangers("Red") #=> false. Needs to be true.
Run Code Online (Sandbox Code Playgroud)

如何使用不区分大小写的grep?

ruby regex

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

如何给javascript find()方法一个参数来搜索?

我试图找出一种在迭代数组时进行搜索的方法.我遇到了find()方法.

这是给出的例子:

var inventory = [
    {name: 'apples', quantity: 2},
    {name: 'bananas', quantity: 0},
    {name: 'cherries', quantity: 5}
];

function findCherries(fruit) { 
    return fruit.name === 'cherries';
}

console.log(inventory.find(findCherries)); 
// { name: 'cherries', quantity: 5 }
Run Code Online (Sandbox Code Playgroud)

我需要找到一个动态的水果名称,但我无法弄清楚如何做到这一点.简而言之,我正在尝试做类似的事情:

function findCherries(fruit, fruitName) { 
    return fruit.name === fruitName;
};

inventory.find(findCherries('cherries'))
//"true is not a function"
Run Code Online (Sandbox Code Playgroud)

有没有办法给出find()一个参数并找到该参数的匹配基础?如果没有,什么方法允许我动态搜索对象数组?

javascript find

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

如何在React中延迟componentDidMount API获取?

我正在使用Axios获取数据,并希望加载动画更长时间(出于个人原因).

  componentDidMount(){
    var that = this;
    axios.get('api.something.io.json', {
        params: data
      })
      .then(function (response) {
        console.log(response);
        that.setState({
          axiosResponse: response.data,
          isLoading: false
        })
      })
      .catch(function (error) {
        console.log(error);
      });
  };
  ...
  render() {
    if(this.state.isLoading){
      return <div>Waiting...</div>
    }

    return (
      <div className="App">
        <h1>{this.state.axiosResponse.awesomeTitle}</h1>
      </div>
    );
Run Code Online (Sandbox Code Playgroud)

现在Waiting...在主要组件渲染之前显示一瞬间.我想延长"Waiting..."一段时间,大约2-3秒.我尝试使用的setTimeoutcomponentDidMount,但它似乎没有工作.

componentDidMount(){
  setTimeout(this.setState({isLoading: 1}), 3000);
  //do axios call here
}
Run Code Online (Sandbox Code Playgroud)

我也尝试在.then调用中存根setTimeout :

  componentDidMount(){
    var that = this;
    axios.get('https://api.rss2json.com/v1/api.json', {
        params: data
      })
      .then(function (response) {
        console.log(response);
        setTimeout(
          that.setState({ …
Run Code Online (Sandbox Code Playgroud)

reactjs axios

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

如何在Elixir中轻松获取第n个String字符?

在Ruby中,我可以轻松地获取字符串的第n个元素"Hello"[0] #=> "H".

我知道String.slice/3Elixir,我可以这样做:String.slice("Hello", 0..0).这个方法看起来有点冗长,是否有更短的方法来获取Elixir中的第n个字符串元素?

string elixir

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

git 不跟踪文件夹和文件?

我正在按照Elixir 的教程开展一个项目。我创建了一个名为 的 git 存储库kv_umbrellakv在某个时候,我将文件夹拖放到kv_umbrella/apps. 但不知何故 git 没有跟踪kv文件夹内的任何内容。

Github 仓库在这里

如果您转到 github 存储库并进入应用程序内部,它是空的。但是,在我本地的笔记本电脑中,我有内容。

kv文件夹

当我 时git status,它表明我没有什么可添加的:

kv_umbrella iggy$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean
Run Code Online (Sandbox Code Playgroud)

还有另一篇SO 帖子,问题与我的类似,但没有一个顶级解决方案有效。

我已经尝试过git add .(在对其中一个文件进行更改后kv

我也尝试手动添加文件,但这就是显示的内容:

kv_umbrella iggy$ git add apps/kv/README.md
fatal: Pathspec 'apps/kv/README.md' is in submodule 'apps/kv'
Run Code Online (Sandbox Code Playgroud)

我应该怎么做才能告诉 git 推送kv文件夹内容?

git

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

计算字符串中子字符串出现的最短方法是什么?(长生不老药)

现在我一直在使用Regex.scan方法:

Regex.scan(~r/do/i, “Do. Or do not. There is no try.") |> length
Run Code Online (Sandbox Code Playgroud)

在 Ruby 中,我们可以使用.scan方法:"Hello world".count "o" #=> 2

是否有更短的方法来使用 Elixir 计算字符串中的子字符串?不需要花哨的正则表达式,我只需要计算一个字符串中有多少个子字符串。

string elixir

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

计算每个炭(Elixir)的发生次数?

在JS中,我可以这样做:

function countIt(str){
  let obj = {};
  for(let i = 0; i < str.length; i++){
    if(!obj[str[i]]){
      obj[str[i]] = 1;
    } else {
      obj[str[i]]++;
    }
  }
  return obj;
}

console.log(countIt("hello"));
//returns {
  e: 1,
  h: 1,
  l: 2,
  o: 1
}
Run Code Online (Sandbox Code Playgroud)

Map考虑到其不变性,在Elixir中计算每个角色出现次数的最佳方法是什么?函数式语言解决此类问题的一般策略是什么?

elixir

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

Element.setAttribute 是否会触发回流?

我开始学习浏览器的内部工作原理,并遇到了回流/重绘机制(以及它如何应用于 React,但我不想离题)。

一般来说,我认为任何使浏览器计算值/可见更改的行为都会触发回流/重绘。

然而,我却无法理解Element.setAttribute。它会触发 Chrome 中的回流/重绘吗?更新dom树中多个元素属性最有效的方法是什么?

javascript browser dom repaint reflow

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

标签 统计

elixir ×3

javascript ×2

ruby ×2

string ×2

axios ×1

browser ×1

dom ×1

find ×1

git ×1

hash ×1

reactjs ×1

reflow ×1

regex ×1

repaint ×1

rspec ×1

ruby-on-rails ×1