はじめに こんにちは、野村です。 前回PHP7の無名関数を復習している最中「c++ではどうやるんだっけ?」てなことが頭をよぎったのですよ。 しばらくc++を書いてなかったのですっかり忘れてしまってた。 なので今回はc++のラムダ式について復習してみます。 無名関数を即時実行 #include <iostream> using namespace std; int main(){ []{cout<<"test"<<endl;}(); return 0; } 実行結果 $ g++ main.cpp -std=c++14&&./a.out test 引数を設定して実行 #include <iostream> #include <string> using namespace std; int main(){ [](string const & str){cout<<str<<endl;}("te
1 はじめに LambdaファンクションをC#で作成する場合、Windows上のVisual Studioであれば、AWS SDK for .NETをインストールするだけで、プロジェクトの雛形生成、デブロイ、実行が、すべてVisual Studio上から超簡単に作業できます。 AWS SDK for .NET しかし、残念ながら、Macから作業する場合、このような便利なツールキットは提供されていません。 下記のリンクに .NET Core CLI を使用して、Lambdaファンクションをデプロイする方法が解説されていますが、やはり、ちょっと複雑な作業をしようとすると、CLIだけで物足りないのは確かです。 Creating a Deployment Package (C#) > .NET Core CLI そこで、今回は、上記を基本としながら、Visual Studio for Mac でプ
新しいJEPには、より明確な曖昧さ回避、未使用パラメータのアンダースコアの使用、外部変数のシャドウイングなど、ラムダ機能を強化するための変更提案が提出されている。これらの変更によって、Javaのラムダが他の言語のラムダに近づくことになるが、最初の議論では支持するレベルも様々であった。このJEPは、Java言語を改善するための、他の一連の提案を補完しており、ローカル変数型の推論と拡張された列挙型を含む。これらは全てJava 10に含まれる可能性がある。 3つの変更はすべてラムダに関連しているが、それらは独立しており、フィードバックに応じて、一部が不採用となり、他のものが採用される可能性がある。そのため、この記事では個別に説明する。 より明確な曖昧性回避 ラムダがバージョン8でJavaに追加されたとき、それらをサポートするために型推論を修正しなければならなかった。しかし、過去に行われた変更は、
本記事の対象者 AWSのLambdaを「使ったことない」、または「使ってみたい」と思っている初心者向けの記事です。 AWSにはいろいろな技術がありますが、今回はLambdaの使い方の最新版を紹介します。 というのもAWSのアップデートは頻繁にあるようで、調べても手順が違っていたり、情報が古かったりと初学者にとっては挫折ポイント満載でした。 なので、2016年12月4日現在の情報で記事を書きます。挫折した人はぜひトライしてみてください。 AWS Lambdaとは AWSに関するなにかしらのイベントによって処理を実行する環境だと考えたらよいと思います。 そしての"その処理"は利用者がアップロードします。 たとえば S3にファイルをアップしたときにプログラムを実行!! S3からファイルを削除したときにプログラムを実行!! APIサーバとして、クライアントから通信を受けたらプログラムを実行!! と
今日は、ラムダ式本体によるメンバーの記述です。ながい。 # 拍子抜けするほどはまりどころがないので、さらさらいくよ。 ラムダ式(”{}”で囲まなくてよい式タイプのやつ)がメソッドのやプロパティーの本体記述に使えるようなりました。 そのままですね。さっそくサンプル。 // メソッドの本体をラムダでかける。 public int Method1() => 1; // ↓ と同じ //public int Method1() //{ // return 1; //} // void でも OK. public void Method2() => Console.WriteLine("a"); // 戻値を捨てるのも可能 public void Method3() => DateTime.Now.ToString(); // 中身のないものは無理っぽい。 // おとなしく↓こう書きましょう。短くな
今回は定義済みデリゲートのお話です。 定義済みデリゲートとは、クラスライブラリで定義されているラムダ式を格納出来る型のことです。 前回までのサンプルコードでは、Actionデリゲート型のみを使用しましたが、 .NET FrameworkにはAction以外にもラムダ式に使用できる型が定義されています。 以下のコードを御覧ください。 class Program { static void Main(string[] args) { // string型の引数1つ、戻り値voidのラムダ式 Action<string> lambda1 = (string message) => /* 括弧の中に型を明示しても良い */ { // 引数で受け取った文字列を表示 Console.WriteLine(message); }; // string型の引数1つを受け取り、int型の戻り値を返すラムダ式
【LINQの前に】ラムダ式?デリゲート?Func<T, TResult>?な人へのまとめ【知ってほしい】C#.NETLINQ.NETFramework はじめに 引数にラムダ式を渡す ラムダ式の型はFuncとActionが用意されている ラムダ式はデリゲートを作るためのもの このような記述や説明をしているC#関連のブログをたまに見かけます。実はこれらは正確には違ったり、正しくなかったり、ちょっと足りなかったりします。「先ほどの説明は正しいのではないか?」と思った方、ぜひこの投稿を読んでください。ラムダ式やその関連要素についての理解が深まると思います。 そして、「LINQを勉強したいのだけれど、ラムダ式とかFunc<T, TResult>とかわからん!」、「Func<TSource, bool>型の引数をとるメソッドに、『num => num > 0』とラムダ式を書いているけれど、それがどう
This chapter is excerpted from C# 3.0 Cookbook, Third Edition: More than 250 solutions for C# 3.0 programmers by Jay Hilyard, Stephen Teilhet, published by O'Reilly Media Introduction A delegate is an object which represents a method and, optionally, the "this" object associated with that method. When the delegate is invoked, the corresponding method is invoked. Delegates contain all that is neede
日本の開発者コミュニティが次世代Java仕様策定に貢献、Lambdaを手に入れたJavaテクノロジのその先へ:Java Day Tokyo 2015基調講演(1/3 ページ) 2015年4月8日、Javaテクノロジに関する開発者イベント「Java Day Tokyo 2015」が開催された。基調講演で紹介されたJavaテクノロジに関する話題を解説していきたい。 2015年4月8日、Javaテクノロジに関する開発者イベント「Java Day Tokyo 2015」が開催された。基調講演で紹介された主な話題は次のようになる。【1】最新版のJava 8(Java SE 8)は新たな言語仕様Lambda(ラムダ式)を取り入れて並列処理への適性を高めた。来年2016年にはJava 9がリリースを予定する。【2】ロボット、IoT(Internet of Things)、パブリッククラウドの各分野のデモ
このポストはC# Advent Calendar 2016の12月17日分です。 毎年いろんなポストでC# Advent Calendarには参加していたのですが、今年ほど書くことに困ったことはありませんでした(^^; 既にカレンダーにある記事のバリエーションも多く、なかなか既に多くファンが多いC#関連で興味を引くようなポストは書けなさそうなので、ちょっとしたTipsなのですが、Visual Studioのツールボックスについて書いてみたいと思います。 まずは基本から…。 ツールボックスの基本 ツールボックスは、開発で利用する部品の格納庫のような役割を担うウインドウです。 Visual Studioのワークスペース上に表示されている内容に応じて、ドラッグアンドドロップ操作で部品を格納したり、格納されている部品を配置することができます。 たとえば、ワークスペース上にWindowsフォームアプ
ここでは C# のデリゲート、匿名メソッド、ラムダ式などの復習も兼ねて、 いろいろな方法でデリゲートを定義します。 自信のないところは、復習しつつ読み進んでみてください。 MyButton クラスでデリゲートを定義 まず、次のような MyButton クラスを定義します。 namespace LambdaExp1 { public class MyButton { public delegate void OnClickDelegate(); public OnClickDelegate OnClick; public void Click() { if (OnClick != null) { OnClick(); } } } } ここでは OnClickDelegate というデリゲート型を定義して、OnClickDelegate 型の OnClick を宣言しています。 また、"ボタン
ラムダ式と匿名メソッドの違い さて、なぜラムダ式は匿名メソッドよりも短く書けるのだろうか。そんな手品のようなことが本当に可能なのだろうか。何か重要な情報が欠落しているのではないだろうか。その疑問に答えるために、匿名メソッドとラムダ式を比較しながらラムダ式の書き方を見てみよう。 using System; delegate int SampleDelegate(int x, int y); class Program { private static void Calculate(int x, int y, SampleDelegate calculator) { Console.WriteLine(calculator(x, y)); } static void Main(string[] args) { // 匿名メソッド Calculate(1, 2, delegate(int x,
Androidとかいうjavaっぽい何かを触っていますけど、 奴はlambdaとか使えないしlambda禁止令がどうとか以前の問題で辛いですね ScalaでAndroidを!といってもapkのサイズは肥大化するし、多分仕事でOKでないところのほうが多いと思います そんな昨今、retrolambdaというかなり素敵なものを教わったのでメモ なお、QiitaにすでにAndroidでラムダ式を使いたいというエントリーが5月に上がっています 一刻も早くサンプルコード見たい人はこちらへ ハマったその1 OS:Linux Mint 17 と mac OSX 10.9.4 で確認 とりあえずgradle-retrolambdaのREADMEに従えば大丈夫ですが… retrolambdaそのものを最新(1.6.1)指定にするとコンパイルに失敗します 多分このissueあたりですかね FAILURE: Bu
C#はラムダ記法で無名関数が書けますし、Javaも8からラムダ記法が可能になりました。 しかし無名関数では再帰関数が書けません。 さてどういうことか。 再帰関数の代表選手として階乗計算を例にとってみましょう。 まず、メソッドとして再帰的に書いてみます。 int Pow(int n) { return (n > 1) ? n * Pow(n - 1) : 1; } こうですね。では、これをラムダ記法で書こうとすると… Func<int, int> pow = n => (n > 1) ? n * 【ここに書くメソッド名がない!】(n - 1) : 1; そう、自分自身を呼ぼうにも自分自身は無名だから呼びようがないのです。困りました。 Javascriptを使う人は「arguments.calleeを使えばいい」と思うかもしれませんが、Javascriptだってもうarguments.call
PowerShellで色々書いてて、折角Foreach-ObjectやWhere-Objectがあるので、もっと関数型言語っぽく書けないものかと思って、仕様をいくつか調べてみた。 if式 $(...)で解決する。$()の括弧内に記載した要素の出力結果を値に変換できる。 条件演算子が無くてもこれで大丈夫。 # 利用例 $count += $(if ($num -lt 10) { 1 } else { 0 }) # 1,0,1,0,... 1..10 | %{ $(if ($_%2 -eq 0) { 0 } else { 1 }) }場合によっては、switchを$()で囲めばパターンマッチっぽいものもできそう。 だが、switchにはbreakが必要なのが残念である。 Tuple 配列をカンマ区切りで書ける。 アクセスは[0], [1]とかでできるので、必要に応じてfst, sndなどを実装
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く