タグ

ブックマーク / bleis-tift.hatenablog.com (2)

  • Java の語彙で Maybe を説明してみる - ぐるぐる~

    java-jaで例外処理の話をしてきました - 西尾泰和のはてなダイアリー を読んで。 Maybe は値があるかないかを型で表すことができます!そう、直和型なんです!とか言われてもイミフだと思うのです(リンク先のエントリがそう説明してるわけではないですが)。 Java の語彙で Maybe の説明をできたら嬉しい人もいるんじゃないかなぁ、とかなんとか。 ただし、書いてたら結構長くなりました。時間がある人はどうぞ。 Maybe? null より安全に「値がないこと」が扱えるものだよ スタート地点としてはこれでいいでしょう。 以降で、「なんで安全なの?」という全うな疑問に答えてみたいと思います。 問題点 int で説明すると煙に巻いてしまうような気がしたので、User クラスを見てみます。 import java.util.*; class User { final String name;

    Java の語彙で Maybe を説明してみる - ぐるぐる~
  • SQL Server の LEN 関数は文字列の長さを正確に取得出来ない・・・だけじゃない - ぐるぐる~

    サロゲート文字*1を含む文字列だと、LEN 関数正しい文字列長を取得出来ない。 -- このSQLを実行すると、1ではなく2が返される SELECT LEN(N'𠮷'); 注意:環境によっては□が表示されるかもしれないけど、実際はつちよし (吉の上が士じゃなくて土) です。 以下、□が現れたら脳内変換するか、表示できる環境で見るかしてくだしあ。 で、実は問題は LEN 関数だけじゃなくて、他の文字列関数や、文字列型にまで及ぶ。 文字列型 例えば、nchar(1) 型や nvarchar(1) の列には「𠮷」を格納することは出来ないし*2、nchar(1) 型や nvarchar(1) 型の変数に代入すると、後ろ 1 バイト分が切り詰められ、結果文字化けする。 だから例えば、「10 文字あれば十分」と判断したとしても、安直に nvarchar(10) なんてしてはいけないということ。 もし

    SQL Server の LEN 関数は文字列の長さを正確に取得出来ない・・・だけじゃない - ぐるぐる~
  • 1