中の技術日誌ブログ

C#とC++/CLIと
VBと.NETとWindowsで戯れる
 

目次

Blog 利用状況

ニュース

自己紹介

東京でソフトウェアエンジニアをやっています。
お仕事大募集中です。
記事執筆や、講師依頼とかでも何でもどうぞ(*^_^*)
似顔絵 MSMVPロゴ
MSMVP Visual C# Since 2004/04-2013/03

記事カテゴリ

書庫

日記カテゴリ

00-整理

01-MSMVP

Rubyで気に入ったところ

戻り値が複数返せるというのは、一部の私の近くにいた人といいよねぇって話をしていた。

こんな感じ

def MultiReturn
  return "中博俊", 32
end

a,b = MultiReturn

C#などで言うとオブジェクト初期化文とか、varとかの次はぜひこのあたりをサポートしてほしい。

戻り値を複数返せるというのはすくなくともout命令を不要にしてくれるので、TryParse系が

var Result, IntValue = int.TryParse(StringValue);
if ( Result == true )
{
  Console.Writeline(IntValue * 2);
}

こんなことができるはず。

#なんて妄想したセッションでした>ゆきさんありがとー

投稿日時 : 2008年2月24日 23:21

コメントを追加

# re: Rubyで気に入ったところ 2008/02/24 23:54 NyaRuRu

C# に Tuple は多分入らないんじゃないでしょうか.パターンマッチをどう書くかという問題がずっとネックになってるらしいです.
今のところ,匿名型を劣化 Tuple の用に使うのがせいぜいだと思います.

>out命令を不要にしてくれるので

out は「メソッドから戻る前に相手側で初期化する」という重要なセマンティクスを持っていて,それは Tuple では代替できません.非同期例外などでこの違いは非常に大きな意味を持ちます.
不要にするは多分言いすぎだと思います.

# re: Rubyで気に入ったところ 2008/02/25 7:01 ゆき

おかずになったようでよかったですw

# 複数の戻り値 2008/02/25 10:05 R.Tanaka.Ichiro's Blog

複数の戻り値

# 複数の戻り値 2008/02/25 10:10 R.Tanaka.Ichiro's Blog

複数の戻り値

# re: Rubyで気に入ったところ 2008/02/25 10:50 通りすがり

同感。
私はよくこんな感じで代用してます。

public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}

private void button1_Click(object sender, RoutedEventArgs e)
{
var r = "16".TryParse();

if(r.judgment== true)
System.Diagnostics.Debug.WriteLine(r.value * 2);

}

}

public static class myExtension
{
public class resultTryParse
{
public bool judgment;
public int value;
}

public static resultTryParse TryParse(this string s)
{
resultTryParse r = new resultTryParse();
int value = 0;
r.judgment = int.TryParse(s, out value);
r.value = value;
return r;
}

}

タイトル  
名前  
URL
コメント