2017-04-05 11 views
1

いくつかのユニコード文字を使用して、いくつかの関数で表記を単純化しようとしています。この機能の1つでは、スターシンボル(\ star)を使用しようとしましたが、いくつかのエラーと警告があります。JuliaのUnicode文字:星の記号

次の作業の例を見てください:

a = [1 2 3; 4 5 6; 7 8 9] 

- 与える:3×3アレイ{} Int64,2

a⋆ = [1 2 3; 4 5 6; 7 8 9] 

は - 与える:ERROR:シンタックス:予想外の " = "

スターシンボルを上記のように使用しても効果がないのはなぜですか?それはJuliaで設計された機能を持っていますか?

+0

有効な識別子文字に関するJuliaのセクションには何が記載されていますか? –

+0

それは私には分かりません。私は前にそのセクションを見ました。まず、「変数の明示的に許可されていない名前は、組み込みステートメントの名前だけです」と表示されます。スターシンボルとしてのユニコード文字については、「有効な識別子であるが、特別に解析される」と言われていますが、状況によっては演算子を変数のように使うこともできます。スターシンボルがユーザ定義のメソッドに対してのみ使用されるかどうかは私には分かりません。 – merch

+0

それは私が見たとき(私はジュリアを聞いたことがなかった)、[私も見つけました](http://docs.julialang.org/en/stable/manual/variables/#allowed-variable-names)です。私はUnicodeのカテゴリU + 22C6(*)が何であるかを見たいと思っていましたが、悲しいことです(http://unicode.org/cldr)。 /utility/character.jsp?a=22C6)がダウンしています(永久か一時的かはわかりません)。しかし、コードチャートは、それが数学のシンボルだと言うので、 –

答えて

2

シンボルは中置演算子として解析します。

julia> dump(parse("a⋆b")) 
Expr 
    head: Symbol call 
    args: Array{Any}((3,)) 
    1: Symbol ⋆ 
    2: Symbol a 
    3: Symbol b 
    typ: Any 

場合は、識別子名の文字としてを可能にするために作ることができるが、それは破壊の変化やこれまでのところ、我々は、一般的に解析されている文字になりますそれらは一般に、適切な優先順位を持つ演算子としてUnicode標準では演算子のように見なされます。

+0

@StefanKarpinskiありがとう、これは私が知りたかったものです。私は例外を作成する必要はないと思う。添字や上付き文字に柔軟性を持たせるといいかもしれませんし、*星*記号などを使う利点を失うかもしれません。しかし、それが一般的にどれほど難しいか、そして/または価値があるかはわかりません。 – merch

+0

添字Unicodeは識別子などで使用できます。 'v1 = 10.0'でもキーボードのショートカットはありません(おそらくこのカットは訂正されます(おそらく\ 1)。 –