とりこらぼ。

Learn from yesterday,
live for today,
hope for tomorrow.

目次

Blog 利用状況

ニュース

プロフィール

  • 名前:とりこびと
    とるに足らない人間です。

  • Wankuma MVP
    for '平々凡々'

Web Site

  • Memo(Of T)

もうひとつの Blog

広告っぽい

書庫

日記カテゴリ

Visual Basic 2008 の新機能 - ローカル型の推論 -

あ、このエントリは「型推論」がいいとか、わるいとか、そんなの何にも書いてませんので、それは期待しないでくださいw

さて、Visual Studio 2008 日本語版もリリースされ、Beta 版の情報しか頭に入ってなかった新しい機能を再確認しておこうと思います。

# 書こう書こうとは思っていたのですが、なんか旬が終わってしまいそうなので足早にw

というわけで、Visual Basic 2008では ローカル型の推論 という機能が新しく追加されました。

MSDN:ローカル型の推論

どういう機能かというとコンパイラが初期化式の型から変数の型を推測することにより、ローカル変数をAs 句なしで変数を宣言することができます。明示的に型を宣言ませんが、これは、Option Strict Off のような遅延バインディングではなく、コンパイラによって推論された型として解決できます。

この機能に対して Visual Basic 2008 では新しく「Option Infer」というオプションが追加されました。

MSDN:Option Infer ステートメント

で、ちょっとしたサンプルコード。

Option Compare Binary
Option Explicit On
Option Infer On
Option Strict On
Imports System.Collections.Generic
Public Module InferenceProgramming
    Sub Main()
        Dim rank = 15         Dim keyword = "メガフライドチキン"         Dim ranking = New Dictionary(Of IntegerString)
        ranking.Add(rank, kerword)
    End Sub
End Module

上記コードは As 句なしで変数を宣言していますが、Option Infer が On のため型推論が機能し、コンパイラによって rankはInteger型、keywordはString型、rankingはDictionary(Of Integer, String)型として解決されます。




熱い議論が繰り広げられているようですが、私自身はまだ発信できる言葉にはなっておりませんので、そのへんは改めて。(冷めないうちに書けるといいな)

投稿日時 : 2007年12月27日 16:43

Feedback

# re: Visual Basic 2008 の新機能 - ローカル型の推論 - 2007/12/27 16:57 επιστημη

せんせぇしつもん。

Dim ranking = New Dictionary(Of Integer, String)

ココで型nteger,Stringを明示せず、たとえば:
Dim ranking =
 New Dictionary(Of TypeOf(rank), TypeOf(keyword))
なんてーことはできんのでしょか。

# re: Visual Basic 2008 の新機能 - ローカル型の推論 - 2007/12/27 17:06 とりこびと

επιστημηさん、コメントありがとうございます。

>TypeOf

できないですねぇ。
「キーワードは型の名前を指定しません。」
って言われちゃいます。

これができるとすこしつっこんだ型推論になりますねぇ♪

# re: Visual Basic 2008 の新機能 - ローカル型の推論 - 2007/12/27 17:15 とりこびと

あ、単純にそう書くとダメですが、何か方法があるかもしれませんね。

調べてきます!!

# re: Visual Basic 2008 の新機能 - ローカル型の推論 - 2007/12/27 17:22 シャノン

それやると、ranking の型が静的に決定できないっすからねぇ。

# re: Visual Basic 2008 の新機能 - ローカル型の推論 - 2007/12/27 17:39 とりこびと

どっかでなんかみたような気がしたシロモノをひらってきました。

Visual Basic におけるジェネリック プロシージャ
http://msdn2.microsoft.com/ja-jp/library/ms235246(VS.80).aspx

気のせいだったかもしれません。

# re: Visual Basic 2008 の新機能 - ローカル型の推論 - 2007/12/27 17:41 NyaRuRu

>επιστημηさん
>ココで型nteger,Stringを明示せず

C# なら,ジェネリックメソッドの型推論ですかね.
C++の関数テンプレートの型推論で使い古された手ですが.

static Dictionary<TKey, TValue> MakeDict<TKey, TValue>(TKey key, TValue value)
{
  return new Dictionary<TKey, TValue>(){ {key, value} };
}
static void Main(string[] args)
{
  int rank = 15;
  string keyword = "メガフライドチキン";
  Dictionary<int, string> ranking = MakeDict(rank, keyword);
}

ここまでは C# 2.0 でも可能で,C# 3.0 ではさらに左辺に var と書ける,と.
Visual Basic 9.0 はよく分からないのですが,なんとなくできそうな気はします.

# re: Visual Basic 2008 の新機能 - ローカル型の推論 - 2007/12/27 17:56 とりこびと

NyaRuRuさん、コメントありがとうございます。

>C# なら,ジェネリックメソッドの型推論ですかね。

先ほどのリンク

Visual Basic におけるジェネリック プロシージャ
http://msdn2.microsoft.com/ja-jp/library/ms235246(VS.80).aspx

で、ジェネリック プロシージャ に対しては型推論は可能であることが書かれています。

# re: Visual Basic 2008 の新機能 - ローカル型の推論 - 2007/12/27 17:56 επιστημη

ですよねー♪
# たまにはとりこびっちに絡んでみたかったのさ

# re: Visual Basic 2008 の新機能 - ローカル型の推論 - 2007/12/27 18:07 とりこびと

επιστημηさん、コメントありがとうございます。

># たまにはとりこびっちに絡んでみたかったのさ


ちょwそれだけ?wwww


# 今日はなにかといろんな人にへこませていただける日だわw

ちなみに多分いちばん隅っこでやってる型推論の話。
http://d.hatena.ne.jp/torikobito/20071227/1198729588

# re: Visual Basic 2008 の新機能 - ローカル型の推論 - 2007/12/27 18:28 NyaRuRu

># たまにはとりこびっちに絡んでみたかったのさ

きっと新手のツンデレ表現.

# re: Visual Basic 2008 の新機能 - ローカル型の推論 - 2007/12/27 18:54 とりこびと

NyaRuRuさん、コメントありがとうございます。

>きっと新手のツンデレ表現.

不覚にも萌えそうになりますw

# Visual Basic 2008 の新機能 - ローカル型の推論の注意すべき点 その1(?その2はないかもw) - 2007/12/27 19:27 とりこらぼ。

Visual Basic 2008 の新機能 - ローカル型の推論の注意すべき点 その1(?その2はないかもw) -

# re: Visual Basic 2008 の新機能 - ローカル型の推論 - 2007/12/27 21:32 JZ5

varばっかりあふれてるのでVBでガツンと言ってやってください。
あと宣言と一緒にNewするとVBだと型推論しなくても=かAsかの違いで書けてしまいますね。

# re: Visual Basic 2008 の新機能 - ローカル型の推論 - 2007/12/28 8:40 とりこびと

JZ5さん、コメントありがとうございます。

>varばっかりあふれてるのでVBでガツンと言ってやってください。

たしかにわんくま内で一連の流れでVisual Basicなのはここだけですねw

>あと宣言と一緒にNewするとVBだと型推論しなくても=かAsかの違いで書けてしまいますね。

Visual Basic ではそれがもともとあった(というか型の宣言が後ろに来るのでまとめやすかった?)わけで、単純な初期化の際にはなんの抵抗もありませんね♪

# re: Visual Basic 2008 の新機能 - ローカル型の推論 - 2007/12/29 18:24 かるあ

> Visual Basic におけるジェネリック プロシージャ
これって以前やってた匿名型配列のキャストと同じだね

# Visual Basic 2008 の新機能 - 匿名型 その1 - 2008/01/07 19:27 とりこらぼ。

Visual Basic 2008 の新機能 - 匿名型 その1 -

# ティンバーランド 2012/10/19 14:58 http://www.timberland-online.net/

鍖?????????瑾般??嬪?????????^_^;)?傘倞??????傘?傘?

# What's up, just wanted to mention, I enjoyed this blog post. It was inspiring. Keep on posting! 2019/05/10 16:12 What's up, just wanted to mention, I enjoyed this

What's up, just wanted to mention, I enjoyed this blog post.
It was inspiring. Keep on posting!

# hi!,I love your writing so much! proportion we keep up a correspondence extra about your post on AOL? I need an expert on this area to resolve my problem. May be that is you! Taking a look ahead to peer you. 2019/06/16 22:42 hi!,I love your writing so much! proportion we kee

hi!,I love your writing so much! proportion we keep
up a correspondence extra about your post on AOL? I need
an expert on this area to resolve my problem. May be that
is you! Taking a look ahead to peer you.

# You really make it seem so easy with your presentation but I find this topic to be actually one thing which I think I would never understand. It seems too complex and extremely large for me. I'm having a look ahead in your subsequent submit, I will try 2019/07/20 16:06 You really make it seem so easy with your presenta

You really make it seem so easy with your presentation but
I find this topic to be actually one thing which I think I would never understand.
It seems too complex and extremely large for me. I'm having a look ahead in your subsequent submit, I will try to get the hold of it!

# Hello there! This is kind of off topic but I need some guidance from an established blog. Is it very difficult to set up your own blog? I'm not very techincal but I can figure things out pretty quick. I'm thinking about making my own but I'm not sure whe 2019/09/08 4:18 Hello there! This is kind of off topic but I need

Hello there! This is kind of off topic but I need some guidance from an established
blog. Is it very difficult to set up your own blog? I'm
not very techincal but I can figure things out pretty quick.
I'm thinking about making my own but I'm not sure where to begin. Do
you have any points or suggestions? Cheers

# MZDpGFnHjxMgfCbt 2022/04/19 9:50 johnanz

http://imrdsoacha.gov.co/silvitra-120mg-qrms

タイトル
名前
Url
コメント