C#: Ví dụ nhỏ về Functional Programming

C#: Ví dụ nhỏ về Functional Programming

Bài viết này giới thiệu kỹ thuật Functional Programming, ví dụ trên ngôn ngữ C# quen thuộc.

Từ phiên bản .NET 2.0, C# đã có thể sử dụng anonymouse delegates và đến 3.5 có lambda expression.

Càng về sau, nhất là .NET 4.5, 1 số class mang tính chất đóng gói các hàm đã được phát triển mạnh mẽ để khai thác sâu về Functional Programming.

1 ví dụ đơn giản dùng Action<T>:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LambdaParam
{
    class Program
    {
        static void Main(string[] args)
        {
            var newGame = new Game()
                .Players(players =>
                {
                    players.Add(new GamePlayer("Khoa"));
                    players.Add(new GamePlayer("Nam"));
                    players.Add(new GamePlayer("Phuong"));
                    players.Add(new GamePlayer("Tu"));
                    players.Add(new GamePlayer("Khang"));
                })
                .Start();
        }
    }

    public class Game
    {
        private List<GamePlayer> _players;

        public Game() 
        {
            _players = new List<GamePlayer>();
        }

        public Game Players(Action<List<GamePlayer>> playerSettings)
        {
            playerSettings.Invoke(_players);
            return this;
        }

        public Game Start()
        {
            Console.WriteLine(String.Format("Game start: {0} players", _players.Count));
            return this;
        }
    }

    public class GamePlayer
    {
        public GamePlayer(string name) { Name = name; }
        public string Name { get; set; }
    }

}

Tài liệu tham khảo:

http://msdn.microsoft.com/en-us/magazine/ee309512.aspx

http://www.dotnetperls.com/lambda

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất /  Thay đổi )

Google photo

Bạn đang bình luận bằng tài khoản Google Đăng xuất /  Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất /  Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất /  Thay đổi )

Connecting to %s