Open10
色々なプログラミング言語のisdigit関数の実装
はじめに
isdigit()
関数は文字型の引数ひとつを取り、真偽値型の戻り値を返す関数のこと。
例示
核心部分を抜粋して記す。
D
bool isDigit(dchar c)
{
return '0' <= c && c <= '9';
}
- 符号位置を見て引数が範囲内であるかどうか調べている。
- 素朴。
Nim
func isDigit(c: char): bool =
const Digits = {'0'..'9'}
return c in Digits
- 文字の集合
を\{0, \dots, 9\} Digits
として定義している。- 引数はこの集合の元であるかどうか調べられている。
- 賢い。
Python
.NET (C#)
public static bool IsDigit(char c)
{
if (IsLatin1(c))
{
return (uint)(c - '0') <= (uint)('9' - '0');
}
return CharUnicodeInfo.GetUnicodeCategory(c) == UnicodeCategory.DecimalDigitNumber;
}
Go
func IsDigit(r rune) bool {
if r <= MaxLatin1 {
return '0' <= r && r <= '9'
}
return isExcludingLatin(Digit, r)
}
- 標準ライブラリの
unicode
パッケージに収録されている。
Haskell
isDigit :: Char -> Bool
isDigit c = (fromIntegral (ord c - ord '0') :: Word) <= 9
Rust
pub const fn is_ascii_digit(&self) -> bool {
matches!(*self, '0'..='9')
}
OpenJDK (Java)
public static boolean isDigit(char ch) {
return CharacterData.of((int)ch).isDigit((int)ch);
}
Swift