我正在寻求学习 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) 我想转换这种格式的任何给定字符串: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}?
我有一个阵列,上面有电力别动队颜色列表, 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?
我试图找出一种在迭代数组时进行搜索的方法.我遇到了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()一个参数并找到该参数的匹配基础?如果没有,什么方法允许我动态搜索对象数组?
我正在使用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秒.我尝试使用的setTimeout上componentDidMount,但它似乎没有工作.
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) 在Ruby中,我可以轻松地获取字符串的第n个元素"Hello"[0] #=> "H".
我知道String.slice/3Elixir,我可以这样做:String.slice("Hello", 0..0).这个方法看起来有点冗长,是否有更短的方法来获取Elixir中的第n个字符串元素?
我正在按照Elixir 的教程开展一个项目。我创建了一个名为 的 git 存储库kv_umbrella。kv在某个时候,我将文件夹拖放到kv_umbrella/apps. 但不知何故 git 没有跟踪kv文件夹内的任何内容。
Github 仓库在这里。
如果您转到 github 存储库并进入应用程序内部,它是空的。但是,在我本地的笔记本电脑中,我有内容。
当我 时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文件夹内容?
现在我一直在使用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 计算字符串中的子字符串?不需要花哨的正则表达式,我只需要计算一个字符串中有多少个子字符串。
在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中计算每个角色出现次数的最佳方法是什么?函数式语言解决此类问题的一般策略是什么?
我开始学习浏览器的内部工作原理,并遇到了回流/重绘机制(以及它如何应用于 React,但我不想离题)。
一般来说,我认为任何使浏览器计算值/可见更改的行为都会触发回流/重绘。
然而,我却无法理解Element.setAttribute。它会触发 Chrome 中的回流/重绘吗?更新dom树中多个元素属性最有效的方法是什么?