F# documents in Japanese

Hi, F#er's!!

Follow me on GitHub

文字と文字列

charとstring

文字を表す型として char, 文字列を表す型として string があります。より正確に、char は、任意のUnicode文字1文字を表し、string は、任意の Unicode 文字が順番に並んだ列を表します。

char

.NET において、char 型は UTF-16 コードに対応しています。日本語文字も問題なく扱えます。以下のように、シングルクォートで囲って使用します。

let x = 'a'
let y = ''

string

F# における string は、immutable です。すなわち、読み取り専用で再代入はできません。最大サイズは 2GB で、およそ 10 億文字までとなっています。ダブルクォートで囲って使用します。

let str = "Hello, World!!"

エスケープシーケンス

エスケープシーケンスとは、円記号(\)とそれに続く文字のことをいいます。エスケープシーケンスを用いることで、制御文字(改行やタブ文字)などの特殊な文字を表現することができます。

let e1 = "a\tb" // "a  b"
let e2 = "a\"b" // "a"b"
let path = "C:\\FSharp\\Love-Language" // C:\FSharp\Love-Language

エスケープシーケンスの一覧は、末尾のページを参考にしてください。

逐語的文字列

逐語的文字列とは、@ とダブルクォートを繋げた文字列のことです。逐語的文字列においては、エスケープシーケンスは無視され、表記したとおりに文字列解釈されます。

let new_path = @"C:\FSharp\Love-Language" // C:\FSharp\Love-Language

例外として、ダブルクォートを逐語的文字列で扱いたい場合は、重ねて("")使用します。

let d = @"{ ""name"":""midori"", ""age"":""29"" }" // { "name":"midori", "age":"29" }

また、トリプルクォートを使うことで、重ねる必要がなくなります。

let t = """{ "name":"midori", "age":"29" }""" // { "name":"midori", "age":"29" }

文字列演算子

+ を使用して、2 つ以上の文字列を連結できます。

let str = "Hello, " + "World!!" // "Hello, World!!"

参考