三国志 パチンコk8 カジノ例外によらないエラー処理――Rustのエラー処理を理解する仮想通貨カジノパチンコ麻雀 の ルール 初心者
ビット コイン 現物 fx 違いk8 カジノ
1スロット化連載:基礎からしっかり学ぶRust入門
本連載のサンプルコードをGitHubで公開しています。こちらからダウンロードしてみてください。具体的な利用方法は連載第1回を参考にしてください。
Javaなどでは「例外」としてエラー処理が実装されていますが、Rustのエラー処理は例外という仕組みによらない独特なものです。本連載第8回では、Rustにおけるエラー処理の方法を紹介します。
ファイルの内容を出力する
エラー処理は、ファイルの入出力において必要となることが多いものです。まずはファイルの読み込みと内容を表示するコードを作成し、エラー処理について検討してみましょう。ここでは、ファイル名をコマンドラインから取り出し、それを実際に読み込み、表示させてみます。
ファイルの読み込みと表示
コマンドラインで指定されたテキストファイルを読み込み、内容をコンソールに出力するソースコードを以下に示します。
use std::env; (1)use std::fs::File;use std::io::prelude::*;fn main() { let args: Vec<String> = env::args().collect(); (2) let filename = &args[1]; let mut file = File::open(filename).unwrap(); (3) let mut contents = String::new(); file.read_to_string(&mut contents).unwrap(); (4) println!("{}", contents);}src/bin/readfile.rs
(1)はuse文で、幾つかのモジュールを使うという宣言です。Javaにおけるimport文などと同じ位置付けです。std::envモジュールの利用を宣言したことで、(2)のようにコマンドライン引数を取得するargs()メソッドが利用できるようになります。std::fs::Fileは、(3)のFile::open()メソッドのために必要で、std::io::prelude::*は(4)のread_to_string()メソッドのために必要となっています。なお「*」は、その名前空間にあるもの全てという意味です。
【補足】「::」と名前空間
std::env::args()などの「::」は、モジュールの名前空間を区切るものです。モジュールとは名前空間によって階層化された外部ライブラリで、この場合はstd名前空間のenvモジュールにあるargs()メソッドと理解してください。
(2)では、コマンドライン引数を、String型のベクタに変換しています。ベクタとは数値によるインデックスでアクセスできるリストのようなものと思ってください(詳しくは次回以降で取り上げます)。これが分かるように、次のargs[1]で2番目のコマンドライン引数(1番目はコマンド自身)を参照として取得し、ファイル名としています。
(3)では、コマンドラインで指定されたファイル名でファイルをオープンしています。open()メソッドは、他のプログラミング言語と同様にファイルを開くものということは想像できますが、それに続くunwrap()メソッドとは何でしょうか? これについては後述することにして、ここではファイルをオープンするのだと理解してください。
(4)では、read_to_string()メソッドがString型への変更可能な参照を受け取って、ファイルの内容を全て読み込み、続くprintln!()でそれを全て出力しています。ここにもunwrap()メソッドが出てきています。どうやら、unwrap()メソッドは入出力に絡んだ何かをする、ということのようです。
ファイルを明示的にクローズする文はありませんが、プログラムの終了とともにクローズされますので問題はありません。
なお、読み込むファイルとして、以下のようなwagahaiwa_nekodearu.txtというテキストファイルを用意しました。
吾輩は猫である夏目漱石 吾輩《わがはい》は猫である。名前はまだ無い。…後略…wagahaiwa_nekodearu.txt
上記のsrc/bin/readfile.rsを実行すると、wagahaiwa_nekodearu.txtの中身が出力されます。
% cargo run –bin readfile wagahaiwa_nekodearu.txt…中略…吾輩は猫である夏目漱石 吾輩《わがはい》は猫である。名前はまだ無い。…後略…【補足】標準入出力を使う
Rustでも、もちろん標準入出力を使うことができます。散々使ってきたprintln!()も、標準出力への出力を行っています。明示的に標準入出力を使いたい場合には、それぞれstd::io::stdin()メソッド、std::io::stdout()メソッドを使って、File型のオブジェクトを取得します。
存在しないファイルを指定してみる#CmsMembersControl .CmsMembersControlIn {width:100%;background:url(https://image.itmedia.co.jp/images/spacer.gif) #DDD;opacity:0.05;filter:progid:DXImageTransform.Microsoft.Alpha(Enabled=1,Style=0,Opacity=5);z-index:1;}続きを閲覧するには、ブラウザの JavaScript の設定を有効にする必要があります。仮想通貨カジノパチンコ18 マジェスタ ヘッド ライト