Почему я не могу связать две строки и присвоить их символу?

Запуск изменения состояния onClick обновит цвет, но только если вы передадите одно из поддерживаемых значений для IconButton color prop («основной» или «дополнительный»).

import React, { Component } from "react";
import IconButton from "@material-ui/core/IconButton";
import DeleteIcon from "@material-ui/icons/Delete";

class ButtonStyle extends Component {
  constructor(props) {
    super(props);

    this.state = {
      buttonColor: "primary"
    };
  }

  handleClick = e => {
    this.setState({
      buttonColor: "secondary"
    });
  };

  render() {
    const buttonColor = this.state.buttonColor;

    return (
      
); } } export default ButtonStyle;

11
задан 20 March 2009 в 18:41
поделиться

5 ответов

Попробуйте следующее:

:"hello world"
15
ответ дан 3 December 2019 в 01:09
поделиться

Символы Ruby не могут иметь значений, присвоенных им, так как они представляют каноническое значение. Если Вы хотите создать символ из строки, можно использовать "привет" .concat ("мир") .to_sym.

19
ответ дан 3 December 2019 в 01:09
поделиться

символы сбивают с толку при прибытии из языков, которые не имеют ничего как они. Вы не можете присвоить символам, это не то, для чего они.

Вот несколько примеров, которые могут помочь объяснить это.

5.times do |i|
  # a new string is created in each iteration of the loop
  puts "my string".object_id

  # there is only ever one symbol for each possible value
  # so a new object is not created during each iteration
  puts :my_symbol.object_id

  # this often makes a difference when you're using them for things like hash keys
  #some_method(:name => 'bob')
  #some_method('name' => 'bob')
end

Другая большая разница - то, что сравнение символа является просто сравнением указателя.

7
ответ дан 3 December 2019 в 01:09
поделиться

Возможно, то, что Вы на самом деле ищете, является константой? Они могут быть динамично сгенерированы, упомянуты позже, и Вы получаете предупреждение, при попытке повторно присвоить тот.

>> HELLO_WORLD = "hello ".concat("world")
=> "hello world"
>> HELLO_WORLD = "foo"
(irb):3: warning: already initialized constant HELLO_WORLD
=> "foo"
2
ответ дан 3 December 2019 в 01:09
поделиться

Ну, да. Вы не можете присвоить символам. Сделайте Вы имеете в виду что-то как:

foo = { :helloworld => "hello ".concat("world") }

?

0
ответ дан 3 December 2019 в 01:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: