标签: destructuring

如何一次获取多个哈希值?

什么是更短的版本?:

from = hash.fetch(:from)
to = hash.fetch(:to)
name = hash.fetch(:name)
# etc
Run Code Online (Sandbox Code Playgroud)

请注意fetch,如果密钥不存在,我想引发错误.

必须有更短的版本,例如:

from, to, name = hash.fetch(:from, :to, :name) # <-- imaginary won't work
Run Code Online (Sandbox Code Playgroud)

如果需要,可以使用ActiveSupport.

ruby hash ruby-on-rails destructuring

51
推荐指数
3
解决办法
3万
查看次数

如何使用无效变量名称的键名来构造对象属性?

由于对象键是字符串,因此它们可以包含任何类型的字符和特殊字符.我最近偶然发现了一个从API调用中收到的对象.该对象的键名称中包含" - ".

const object = {
   "key-with-dash": []
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,解构不起作用,因为key-with-dash它不是有效的变量名.

const { key-with-dash } = object;
Run Code Online (Sandbox Code Playgroud)

所以我想到了一个问题.在这种情况下,我该如何解构物体呢?它甚至可能吗?

javascript destructuring ecmascript-6

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

Python赋值解构

这三个表达式似乎是等价的:

a,b,c = line.split()
(a,b,c) = line.split()
[a,b,c] = line.split()
Run Code Online (Sandbox Code Playgroud)

他们编译成相同的代码吗?

哪一个更pythonic?

python destructuring

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

解构和重命名属性

const a = {
 b: {
  c: 'Hi!'
 }
};

const { b: { c } } = a;
Run Code Online (Sandbox Code Playgroud)

b在这种情况下可以重命名吗?我想要获取c并重命名b.

javascript rename object destructuring ecmascript-6

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

React - defaultProps vs ES6默认params在解构时(性能问题)

在我的一个无状态功能组件中设置默认值时,我刚刚遇到了关于React性能的问题.

这个组件有一个defaultProps定义的row: false,但我不喜欢它,因为defaultProps位于文件的末尾,这实际上使它更难看.因此,我们不知道默认属性.所以我直接将它移动到函数声明中,并使用参数的ES6默认值进行分配.

const FormField = ({
  row = false,
  ...others,
}) => {
  // logic...
};
Run Code Online (Sandbox Code Playgroud)

但后来我们与一位同事争论这是一个好主意.因为这样做可能看起来微不足道,但也可能对性能产生很大影响,因为反应不知道默认值.

我相信在这种情况下,它是微不足道的.因为它是布尔值而不是对象/数组,因此在对帐期间不会被视为不同的值.


但是,让我们现在看一个更高级的用例:

const FormField = ({
  input: { name, value, ...inputRest },
  label = capitalize(name),
  placeholder = label,
  row = false,
  meta: { touched, error, warning },
  ...others,
}) => {
  // logic...
};
Run Code Online (Sandbox Code Playgroud)

在这里,我基于placeholderfrom 的值label,它本身就是基于的input.name.使用ES6解构和参数的默认值使整个事情很容易编写/理解,它就像一个魅力. …

performance destructuring ecmascript-6 reactjs

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

C#7有阵​​列/可枚举的解构吗?

在Javascript ES6中,您可以像这样构造数组:

const [a,b,...rest] = someArray;
Run Code Online (Sandbox Code Playgroud)

其中a是该阵列中的第一个元素,b是第二个,rest是与剩余的元件的阵列.

我知道在C#7中你可以在赋值时解构元组,但是找不到任何与解构数组/枚举相关的东西:

var (a,b) = someTuple;
Run Code Online (Sandbox Code Playgroud)

我有一个IEnumerable我需要第一个和第二个元素作为变量的地方,我需要其余的元素作为另一个IEnumerable.我有一个解决方案,但觉得解构会看起来更干净.

c# destructuring c#-7.0

37
推荐指数
7
解决办法
7539
查看次数

解构数组时的类型

function f([a,b,c]) {
  // this works but a,b and c are any
}
Run Code Online (Sandbox Code Playgroud)

有可能写出类似的东西吗?

function f([a: number,b: number,c: number]) {
  // being a, b and c typed as number 
}
Run Code Online (Sandbox Code Playgroud)

arrays types destructuring typescript

36
推荐指数
5
解决办法
8673
查看次数

如何在C++中模拟解构?

在JavaScript ES6中,有一种称为解构的语言功能.它也存在于许多其他语言中.

在JavaScript ES6中,它看起来像这样:

var animal = {
    species: 'dog',
    weight: 23,
    sound: 'woof'
}

//Destructuring
var {species, sound} = animal

//The dog says woof!
console.log('The ' + species + ' says ' + sound + '!')
Run Code Online (Sandbox Code Playgroud)

我可以在C++中做些什么来获得类似的语法并模拟这种功能?

javascript c++ language-construct destructuring c++17

35
推荐指数
3
解决办法
5548
查看次数

如何忽略数组解构中的某些返回值?

当我只对索引0之外的数组值感兴趣时,我可以避免在数组解构时声明无用的变量吗?

在下面,我想避免声明a,我只对索引1及更高版本感兴趣.

// How can I avoid declaring "a"?
const [a, b, ...rest] = [1, 2, 3, 4, 5];

console.log(a, b, rest);
Run Code Online (Sandbox Code Playgroud)

javascript arrays destructuring

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

我可以预先声明变量以解析对象的分配吗?

背景

当我尝试使用数组解构赋值时,我能够预先声明我的变量:

let a, b, c;
let arr = [1, 2, 3, 4, 5];
[a, b, c] = arr;

console.log(a) // logs 1
console.log(b) // logs 2
console.log(c) // logs 3
Run Code Online (Sandbox Code Playgroud)

这通过了Babel编译器就好了.

但是,当我尝试对对象做同样的事情时,我收到了一个错误

let a, b, c
let obj = {cat: 'meow', dog: 'woof', mouse: 'squeak'};
{cat: a, dog: b, mouse: c} = obj;

console.log(a) // I want this to log 'meow'
console.log(b) // I want this to log 'woof'
console.log(c) // I want this to log 'squeak'
Run Code Online (Sandbox Code Playgroud)

这是ES6还是Babel的怪癖/问题?如果它是ES6的故意,为什么与数组的处理方式有所不同? …

javascript destructuring ecmascript-6 babeljs

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