型推論とは? わかりやすく解説

Weblio 辞書 > 同じ種類の言葉 > 人文 > 論理 > 推論 > 型推論の意味・解説 

型推論

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/06/22 01:55 UTC 版)

型推論(かたすいろん、: type inference)とはプログラミング言語の機能の1つで、静的な型付けを持つ言語において、変数関数シグネチャを明示的に宣言しなくても、変数宣言における初期化のための初期値や、関数呼び出しにおける実引数などといった、周辺情報および文脈などから自動的に(暗黙的に)各々の型を決定する機構のこと。言語によってはtype deductionと呼ばれることもある。


  1. ^ C言語は関数の戻り値の型を省略した場合、intを返すと仮定する仕様になっているが、これを型推論とは呼ばない。
  2. ^ 暗黙的に型指定されるローカル変数 - C# プログラミング ガイド | Microsoft Docs
  3. ^ auto - cpprefjp C++日本語リファレンス
  4. ^ decltype - cpprefjp C++日本語リファレンス
  5. ^ クラステンプレートのテンプレート引数推論 - cpprefjp C++日本語リファレンス
  6. ^ a b Type Inference brings JS improvements to Firefox Beta Brian Hackett, 2011年11月10日(2011年12月24日閲覧)。
    型推論により Firefox Beta の JavaScript が高速化しました(上の記事の和訳)、2011年12月24日閲覧。
  7. ^ 一色政彦 (2011年4月22日). “Internet Explorer 9正式版レビュー”. @IT. 2011年12月24日閲覧。
  8. ^ Mozilla、「Firefox 9」の正式版をリリース 「型推論」技術で45%高速に”. ITmedia (2011年12月21日). 2011年12月24日閲覧。



型推論

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/06/05 19:25 UTC 版)

Rustコンパイラ変数への代入時(variable = value)、変数の型を値の型に基づき型推論する。変数の宣言には必ずしも型を決定するための初期値必要としない変数の宣言時に初期値与えられた場合は「変数の型」は「初期値の型」であると型推論がなされるが、初期値与えられなかった場合以降のブロックコード中のその変数へ値が初め代入され時に左辺変数の型」は「右辺代入する値の型」であると型推論がなされる変数への代入が型不一致により失敗した場合にはコンパイル時エラー検出する

※この「型推論」の解説は、「Rust (プログラミング言語)」の解説の一部です。» 「Rust (プログラミング言語)」の概要を見る


型推論

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/06/05 19:25 UTC 版)

Rustコンパイラ変数への代入時(variable = value)、変数の型を値の型に基づき型推論する。変数の宣言には必ずしも型を決定するための初期値必要としない変数の宣言時に初期値与えられた場合は「変数の型」は「初期値の型」であると型推論がなされるが、初期値与えられなかった場合以降のブロックコード中のその変数へ値が初め代入され時に左辺変数の型」は「右辺代入する値の型」であると型推論がなされる変数への代入が型不一致により失敗した場合にはコンパイル時エラー検出する

※この「型推論」の解説は、「Rust (プログラミング言語)」の解説の一部です。» 「Rust (プログラミング言語)」の概要を見る


型推論

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/08/17 21:54 UTC 版)

C# 3.0でコンテキストキーワードvarによる限定された型推論が導入された。ローカル変数宣言時に、型を右辺から推論できるメソッド引数フィールドには使えないまた、ラムダ式戻り値および仮引数は型推論により決定されるラムダ式仮引数は型を省略することで型推論されるが、型推論が困難な場合には明示的に型を指定するJava 7で導入されダイヤモンド演算子<>は宣言文右辺ジェネリクスの型を省略できる程度のものでしかなかったが、Java 10ではC#同様に予約型名varによるローカル変数の型推論が導入された。Java 8で導入されラムダ式では、仮引数の型を省略することで型推論されるが、さらにJava 11ではラムダ式仮引数の型にvar使用して型推論できるようになった

※この「型推論」の解説は、「C SharpとJavaの比較」の解説の一部です。» 「C SharpとJavaの比較」の概要を見る


型推論

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/08/17 21:54 UTC 版)

C# 3.0でコンテキストキーワードvarによる限定された型推論が導入された。ローカル変数宣言時に、型を右辺から推論できるメソッド引数フィールドには使えないまた、ラムダ式戻り値および仮引数は型推論により決定されるラムダ式仮引数は型を省略することで型推論されるが、型推論が困難な場合には明示的に型を指定するJava 7で導入されダイヤモンド演算子<>は宣言文右辺ジェネリクスの型を省略できる程度のものでしかなかったが、Java 10ではC#同様に予約型名varによるローカル変数の型推論が導入された。Java 8で導入されラムダ式では、仮引数の型を省略することで型推論されるが、さらにJava 11ではラムダ式仮引数の型にvar使用して型推論できるようになった

※この「型推論」の解説は、「C SharpとJavaの比較」の解説の一部です。» 「C SharpとJavaの比較」の概要を見る


型推論

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/11/20 02:06 UTC 版)

Haskell では関数データ型明示しなくても処理系自動的に型を推論する以下は型の宣言省略し本体のみを宣言した引数平方返す関数 square である。 square x = x * x この場合 square の型は型推論され、次のように明示的に型を宣言したと同じになる。 square :: (Num a) => a -> asquare x = x * x この宣言は、「Numのインスタンスである a の型の値を引数にとり、a の型の値を返す」と読める。ここでは「*」演算子適用可能な最も広い型である Num a選択されており、整数浮動小数点数有理数のような Num のインスタンスであるあらゆる型の値を渡すことができる。外部公開するような関数定義するときは、型推論によって自動的に選択される最も広い型では適用可能範囲が広すぎる場合もある。Integer のみを渡せるように制限する場合は、次のように明示的に型を宣言すればよいsquare :: Integer -> Integersquare x = x * x 型推論のため、Haskell は型安全でありながらほとんどの部分で型宣言省略できる。なお、次のコードは型宣言必要な例である。read は文字列をその文字列があらわすデータ型変換する抽象化された関数である。 main = print (read "42") -- コンパイルエラー! このコードコンパイルエラーになる。read複数インスタンス実装されており、数値なら数値型変換する readリストならリスト変換する read というように型ごとに実装存在するHaskell の型は総て静的決定されなければならない。このコード場合プログラマread :: String -> Int という型をもつ実装read選択される期待しているであろうが、これはコンパイラによる静的型検査では決定できない。つまり、Haskell コンパイラread返り値受け取っている関数 print の型を検査し多数実装中から適切な read選択しようとするが、printShowインスタンス存在するあらゆる型を引数にとるため、型推論によっても read の型を一意決定できない。これを解消するひとつの方法は、:: によって型を明示することである。 main = print ((read "42") :: Int) -- コンパイル成功read返り値Int明示している また、そもそも read返り値整数型しか取らない関数与えていればあいまいさ生じず、型推論は成功する。 printIntOnly :: Int -> IO ()printIntOnly x = print xmain = printIntOnly (read "42") -- コンパイル成功他の言語、たとえば Javaこのような抽象的な関数書こうとしても、Java では返り値の値の型によって関数選択するようなことはできない引数の型によって選択するメソッドオーバーロード存在する)。そのため、関数実装ごとに別の名前をつけてプログラマ明示的に選択させて解決させることになる。この方法は簡潔でわかりやすいが、抽象性の高さに基づ再利用性という点では Haskell のような多相には劣ってしまう。

※この「型推論」の解説は、「Haskell」の解説の一部です。» 「Haskell」の概要を見る


型推論

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/06/05 19:25 UTC 版)

Rustコンパイラ変数への代入時(variable = value)、変数の型を値の型に基づき型推論する。変数の宣言には必ずしも型を決定するための初期値必要としない変数の宣言時に初期値与えられた場合は「変数の型」は「初期値の型」であると型推論がなされるが、初期値与えられなかった場合以降のブロックコード中のその変数へ値が初め代入され時に左辺変数の型」は「右辺代入する値の型」であると型推論がなされる変数への代入が型不一致により失敗した場合にはコンパイル時エラー検出する

※この「型推論」の解説は、「Rust (プログラミング言語)」の解説の一部です。» 「Rust (プログラミング言語)」の概要を見る

ウィキペディア小見出し辞書はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ

「型推論」の例文・使い方・用例・文例

Weblio日本語例文用例辞書はプログラムで機械的に例文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。



型推論と同じ種類の言葉


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

型推論のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



型推論のページの著作権
Weblio 辞書情報提供元は参加元一覧にて確認できます。

  
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアの型推論 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのRust (プログラミング言語) (改訂履歴)、Rust (プログラミング言語) (改訂履歴)、C SharpとJavaの比較 (改訂履歴)、C SharpとJavaの比較 (改訂履歴)、Haskell (改訂履歴)、Rust (プログラミング言語) (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。
Tanaka Corpusのコンテンツは、特に明示されている場合を除いて、次のライセンスに従います:
 Creative Commons Attribution (CC-BY) 2.0 France.
この対訳データはCreative Commons Attribution 3.0 Unportedでライセンスされています。
浜島書店 Catch a Wave
Copyright © 1995-2022 Hamajima Shoten, Publishers. All rights reserved.
株式会社ベネッセコーポレーション株式会社ベネッセコーポレーション
Copyright © Benesse Holdings, Inc. All rights reserved.
研究社研究社
Copyright (c) 1995-2022 Kenkyusha Co., Ltd. All rights reserved.
日本語WordNet日本語WordNet
日本語ワードネット1.1版 (C) 情報通信研究機構, 2009-2010 License All rights reserved.
WordNet 3.0 Copyright 2006 by Princeton University. All rights reserved. License
日外アソシエーツ株式会社日外アソシエーツ株式会社
Copyright (C) 1994- Nichigai Associates, Inc., All rights reserved.
「斎藤和英大辞典」斎藤秀三郎著、日外アソシエーツ辞書編集部編
EDRDGEDRDG
This page uses the JMdict dictionary files. These files are the property of the Electronic Dictionary Research and Development Group, and are used in conformance with the Group's licence.

©2022 GRAS Group, Inc.RSS