Usando o primeiro - "'" em Julia variáveis

0

Pergunta

Eu tenho muitas variáveis e matrizes que eu gostaria de chamar com um primo, como:

xprime, yprime, rprime e assim por diante.

Eu acredito que eu não posso usar x', y', r' etc. como é utilizado por exemplo para matrizes transpostas.

julia> x' = 5
ERROR: syntax: invalid assignment location "x'" around REPL[2]:1
Stacktrace:
 [1] top-level scope at REPL[2]:1

julia> x = [1,2]
2-element Array{Int64,1}:
 1
 2

julia> x'
1×2 LinearAlgebra.Adjoint{Int64,Array{Int64,1}}:
 1  2

Estou aberto a qualquer sugestão de uma maneira mais conveniente de xprime, yprime etc. o que é muito longo e feio, eu acho.

julia variables
2021-11-22 13:53:52
1

Melhor resposta

10

Você pode usar prime:

julia> x′ = 1
1

julia> x′
1

help?> ′
"′" can be typed by \prime<tab>

Observe a diferença de que eu uso o (prime), enquanto você tentou usar ' (plicas). Usar aspas simples, não é permitido em nome de variável como ele invoca adjoint operação em um valor anterior (que você pode ver no seu exemplo).

Como explicado na ajuda para você pode digitá-lo na Julia REPL e na maioria dos editores configurado para oferecer suporte a Julia digitando \prime e pressionar Tab.

2021-11-22 14:38:24

Isso pode cumprir os objectivos originais, mas eu teria que dizer que ele é puro mal do ponto de vista da legibilidade. O ingênuo leitor provavelmente não tem idéia de que \prime está sendo usado em vez de aspas simples. Este é semelhante ao uso de maiúsculas Alfa como um nome de variável. Ver gist.github.com/tdunning/219ec70253542253cd66f1021d57e677 para um exemplo.
Ted Dunning

Concordou - também gostaria de aconselhar contra o uso de qualquer sequências de caracteres que pode ser alterado se alguém usou de normalização na sequência, pois leva à confusão do usuário.
Bogumił Kamiński

Então, no final, você sugerir a utilização xprime, rprime como eu fiz primeiro?
JKHA

Isso depende. Se você pretende que seu código para ser lido por outros usuários, sem qualquer referência, então, provavelmente, sim. No entanto, se o seu código não utiliza álgebra linear (portanto, não há risco de confusão com adjoint) e e.g. o seu código reproduz textualmente as fórmulas matemáticas de algum papel (onde o primeiro é utilizado), então eu acho que é OK para usá-lo. Em resumo eu diria: você deve ter certeza de que a notação você não leitor de confusão. Outro exemplo é que os programadores são geralmente desencorajados a fazer variáveis com nome l como em muitos tipos de letra parece muito semelhante ao 1.
Bogumił Kamiński

Em outros idiomas

Esta página está em outros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................