গোপনীয়তা

গোপনীয়তা

লার্নিং অনুশীলনী

ভূমিকা

অ্যানোনিমাস ফাংশন

Gleam-এ ফার্স্ট-ক্লাস ফাংশন আছে, অর্থাৎ ফাংশন হলো সাধারণ মান, যেগুলো ভ্যারিয়েবলে অ্যাসাইন করা যায়, আর্গুমেন্ট হিসেবে পাঠানো যায় এবং অন্য ফাংশন থেকে রিটার্ন করা যায়।

মডিউলে ডিফাইন করা একটি নামযুক্ত ফাংশনকে তার নাম দিয়েই রেফার করা যায়।

pub fn main() {
  // Assign the function to a variable
  let f = add_one
  
  // Invoke the function
  f(1) // -> 2
  f(2) // -> 3
}

fn add_one(x) {
  x + 1
}

Gleam-এ আবার অ্যানোনিমাস ফাংশনও আছে, যেগুলো অন্য ফাংশনের ভেতরে ডিফাইন করা হয়।

// Define the function
let f = fn(x) { x + 1 }

// Invoke the function
f(1) // -> 2
f(2) // -> 3

ফাংশনের টাইপ লেখা হয় অ্যানোনিমাস ফাংশনের মতোই সিনট্যাক্স ব্যবহার করে। যে ফাংশন একটি Int আর একটি Float নেয় এবং একটি Int রিটার্ন করে, তার টাইপ লেখা হয় এভাবে:

fn(Int, Float) -> Int

অ্যানোনিমাস ফাংশন এমন ভ্যারিয়েবল রেফার করতে পারে যেগুলো ফাংশনটি ডিফাইন করার সময় স্কোপে ছিল, আর এ কারণেই এগুলো ক্লোজার।

let secret_number = 42

// This function always returns 42
fn() { secret_number }

ফাংশন ক্যাপচার সিনট্যাক্স একটি সুবিধাজনক শর্টহ্যান্ড দেয়, যার মাধ্যমে এমন অ্যানোনিমাস ফাংশন তৈরি করা যায় যা একটি ফাংশনে একটি মাত্র আর্গুমেন্ট পাঠায়। এই দুটি এক্সপ্রেশন সমতুল্য:

// Anonymous function syntax
let f = fn(x) { my_function(1, 2, x) }

// Function capture syntax
let f = my_function(1, 2, _)

নির্দেশনা

এই অনুশীলনীতে আপনাকে এমন একটি এনক্রিপশন ডিভাইসের সফটওয়্যার লেখার দায়িত্ব দেওয়া হয়েছে, যা ডেটার উপর নানা রূপান্তর চালিয়ে কাজ করে। সহজ ফাংশনগুলো একসাথে জুড়ে জটিল ফাংশন নমনীয়ভাবে তৈরির একটি উপায় আপনার দরকার।

প্রতিটি টাস্কের জন্য এমন একটি অ্যানোনিমাস ফাংশন রিটার্ন করুন, যা কল করার স্কোপ থেকে কল করা যায়।

1. একটি যোগ করার ফাংশন তৈরি করুন

secret_add ইমপ্লিমেন্ট করুন। এটি এমন একটি ফাংশন রিটার্ন করবে, যা একটি আর্গুমেন্ট নেয় এবং তার সাথে secret_add-এ পাস করা আর্গুমেন্ট যোগ করে।

let adder = secret_add(2)
adder(2)
// -> 4

2. একটি বিয়োগ করার ফাংশন তৈরি করুন

secret_subtract ইমপ্লিমেন্ট করুন। এটি এমন একটি ফাংশন রিটার্ন করবে, যা একটি আর্গুমেন্ট নেয় এবং সেই আর্গুমেন্ট থেকে secret_subtract-এ পাস করা সিক্রেট বিয়োগ করে।

let subtractor = secret_subtract(2)
subtractor(3)
// -> 1

3. একটি গুণ করার ফাংশন তৈরি করুন

secret_multiply ইমপ্লিমেন্ট করুন। এটি এমন একটি ফাংশন রিটার্ন করবে, যা একটি আর্গুমেন্ট নেয় এবং secret_multiply-এ পাস করা সিক্রেট দিয়ে সেটিকে গুণ করে।

let multiplier = secret_multiply(7)
multiplier(3)
// -> 21

4. একটি ভাগ করার ফাংশন তৈরি করুন

secret_divide ইমপ্লিমেন্ট করুন। এটি এমন একটি ফাংশন রিটার্ন করবে, যা একটি আর্গুমেন্ট নেয় এবং secret_divide-এ পাস করা সিক্রেট দিয়ে সেটিকে ভাগ করে।

let divider = secret_divide(3)
divider(32)
// -> 10

5. একটি ফাংশন কম্বাইনার তৈরি করুন

secret_combine ইমপ্লিমেন্ট করুন। এটি এমন একটি ফাংশন রিটার্ন করবে, যা একটি আর্গুমেন্ট নেয় এবং secret_combine-এ পাস করা দুটি ফাংশন ক্রমানুসারে তার উপর প্রয়োগ করে।

let multiply = secret_multiply(7)
let divide = secret_divide(3)
let combined = secret_combine(multiply, divide)

combined(6)
// -> 14
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
Gleam Exercism

গোপনীয়তা শুরু করতে প্রস্তুত?

Exercism-এ সাইন আপ করুন, Gleam ট্র্যাকের 33টি কনসেপ্ট122টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।