2017-01-30 9 views
6

Juliaを使用して、任意の型を確実にString型に変換したいと思います。 v0.5では、string関数またはStringコンストラクタのいずれかの変換を実行する2つの方法があるようです。問題は、入力タイプに応じて適切なものを選択する必要があることです。JuliaのString型に変換する方法

たとえば、typeof(string(1))は、Stringと評価されますが、String(1)はエラーをスローします。一方、typeof(string(SubString{String}("a")))Substring{String}と評価され、Stringのサブタイプではありません。代わりにString(SubString{String}("a"))を実行する必要があります。

だから、Stringを入力するために、任意の入力xを変換するための唯一の信頼できる方法で構造を経由しているようだ:

String(string(x)) 

ビット面倒に感じています。

ここに何か不足していますか?

+2

なぜあなたは他のすべての 'AbstractString'sの除外で' STRING'が必要なのでしょうか?理想的には、正確な文字列の種類を気にする必要はありません。 –

+0

@MattB。あなたが私の型定義に 'AbstractString'を使っていなければならないと指摘したので、いい理由はありません:-)完全性のために、これは' String(string)(x))が'String'型を取得する最も信頼性の高い方法は? –

答えて

3

明示的にStringに変換する必要はほとんどありません。型定義にStringフィールドがある場合でも、配列に具体的な要素タイプがStringである場合でも、暗黙的な変換に依存できます。例えば

、ここでの暗黙的な変換の例は以下のとおりです。

type TestType 
    field::String 
end 

obj = TestType(split("x y")[1]) # construct TestType with a SubString 
obj.field # the String "x" 

obj.field = SubString("Hello", 1, 3) # assign a SubString 
obj.field # the String "Hel" 
関連する問題