ফ্ল্যাটম্যাপ সম্পর্কে কী এত শক্তিশালী যে এটি স্কালার লোককাহিনীতে এমন স্থানের জন্য প্রাপ্য?
forভাষা রেফারেন্সে কীভাবে এক্সপ্রেশন পরিচালনা করে সে সম্পর্কে বিভাগটি পড়ুন । এটি কিছু ইঙ্গিত দিতে পারে।
ফ্ল্যাটম্যাপ সম্পর্কে কী এত শক্তিশালী যে এটি স্কালার লোককাহিনীতে এমন স্থানের জন্য প্রাপ্য?
forভাষা রেফারেন্সে কীভাবে এক্সপ্রেশন পরিচালনা করে সে সম্পর্কে বিভাগটি পড়ুন । এটি কিছু ইঙ্গিত দিতে পারে।
উত্তর:
এই বাক্যাংশের পিছনে যুক্তি হ'ল আপনি যদি / তারপরে / অন্য কোডটি ফ্ল্যাটম্যাপ (এবং অন্যান্য উচ্চতর ক্রিয়াকলাপ) -এ কল দিয়ে লিখতেন তবে আপনি অনেক ক্লান্তিকর স্থান পরিবর্তন করতে পারেন।
এটি বিকল্পগুলির জন্য বিশেষভাবে সত্য (দেখুন http://tonymorris.github.io/blog/posts/scalaoption-cheat-sheet/ )
তবে এটি অন্যান্য মনদেদের ক্ষেত্রেও প্রযোজ্য (যদিও আমাকে স্বীকার করতে হবে, আমি নিজে এখনও বিশদটি নিজেই বুঝতে পারি না)
আপনার কাছে এমন কোনও পরিস্থিতি কল্পনা করুন যেখানে আপনি কোনও ফাংশন (বা ফাংশনগুলির একটি সিরিজ) প্রয়োগ করতে চান যেখানে প্রতিটি ফাংশন বাতিল হতে পারে। আপনি যখন নাল ব্যবহার করবেন তখন আপনার কোড নাল চেকের সাথে ছাঁটাই হয়ে যাবে। তবে আপনি যদি মানগুলির পরিবর্তে বিকল্পগুলি ব্যবহার করেন তবে আপনি কেবলমাত্র একাধিক ফাংশনের ক্ষেত্রে ফাংশনগুলি শৃঙ্খলাবদ্ধ করে কাঙ্ক্ষিত ফাংশনগুলির সাথে মানগুলি ফ্ল্যাটম্যাপ করতে পারেন এবং কেবল ফলাফলগুলি নাল নয় এমন একটি সংগ্রহ পেতে পারেন, যা অনেক ক্ষেত্রে ঠিক একই রকম তুমি চাও.
যেহেতু এই বিবরণটি বরং সংক্ষিপ্ততর পরামর্শকে সংশোধন করা হয়েছে "কেবল ফ্ল্যাটম্যাপ যে ছিটে" নিজেই প্রতিষ্ঠিত।
যে গল্পটি আমি শুনেছিলাম তা হ'ল দু'জন প্রধান স্ক্যালার প্রোগ্রামার জুটি বাঁধছিলেন যখন তাদের মধ্যে কেউ এইরকম কিছু কোড লেখা শুরু করলেন:
option match {
case Some ...
কোন মুহুর্তে অন্যটি বলল "এটি কি? অপেশাদার ঘন্টা? ফ্ল্যাট মানচিত্র যে ছিটে!"
কী সম্পর্কে এত শক্তিশালী flatMap, ভাল ... প্রথমত, এটি মৌলিক মনাদিক অপারেটর। এর অর্থ এটি একটি সাধারণ ক্রিয়াকলাপ, উদাহরণস্বরূপ, ধারকগুলি (যেমন Option, সংগ্রহগুলি, ইত্যাদি), ধারাবাহিকতা, রাজ্য ইত্যাদি দ্বারা ভাগ করা হয় দ্বিতীয়, যখন আপনি একটি ডি-কনস্ট্রাক্ট করতে পারেন Option, তার বিপরীতেflatMap কোনওটি , কোনও মনডাক অপারেশন নয় , তাই এটি ব্যাপকভাবে প্রয়োগ করা যায় না। এছাড়াও, আপনি যে ডেটা ম্যানিপুলেট করছেন তা সম্পর্কে এর জন্য অত্যধিক জ্ঞানের প্রয়োজন।
দ্রষ্টব্য: পূর্বে আমি বলেছিলাম ম্যাচটি তুলনায় ধীর flatMap - বিপরীতটি সত্য হিসাবে সত্য, এই লেখার সময় স্কালার অতি সাম্প্রতিক সংস্করণ পর্যন্ত, ২.১০.১।)
val res = for (a <- ma; b <- mb; c <- mc; d <- md) yield f(a,b,c,d)। আমি আরও মোনাড যোগ করতে পারি, মনদেসগুলি সরাতে পারি এবং এটি একই থাকে। এছাড়াও, মনে রাখবেন তা মধ্যে পচা এই নয় যে String, কিন্তু মধ্যে Option[String]। যদিও, বাস্তবে, এটি মোটেও পচে যায় না। কিছু লোক পাত্রে উদাহরণস্বরূপ পাত্রে ব্যবহার পছন্দ না করার একটি কারণ হ'ল আপনি পাত্রে জিনিসগুলি বাইরে নিয়ে যেতে পারেন, তবে সমস্ত মনাদ আপনাকে এটি করতে দেয় না।
গুরুত্বপূর্ণ বিষয়টি flatMapহ'ল এটি স্কালার একাকী বিন্যস্ত ক্রিয়াকলাপের প্রতিনিধিত্ব। ওয়েবে মোনাডের উদ্দেশ্য এবং কেন তারা ঠিক এত কার্যকর তা ব্যাখ্যা করার জন্য অসংখ্য টিউটোরিয়াল রয়েছে; জেমস আইরির একটি রয়েছে যা কিছু বিশদে যায়।
Optionঅনেকগুলি flatMapব্যবহারের ক্ষেত্রে এটি। অবশ্যই, যদি আপনি তাদের "প্রাকৃতিক আবাসস্থল" তে মনদেহগুলি পর্যবেক্ষণ করতে চান তবে আপনার হাস্কেল পরীক্ষা করা উচিত। পার্থক্য হ'ল হাস্কেলাররা বলেছেন: "ঠিক >> = ছি ছি!"
রুনার বাজনারসন সেই ব্যক্তি যাকে আপনি উত্সের সন্ধান করছেন।
কেন এটি এত শক্তিশালী তা উপলব্ধি করা এমন একটি বিষয় যা কেবলমাত্র সততার সাথে সময় আসতে পারে। আপনি কীভাবে বারবার চূড়ান্ত ফলাফলের জন্য উদাহরণস্বরূপ (যেমন) ধারাবাহিকভাবে ফ্ল্যাটম্যাপ করবেন তা দেখার জন্য অপশন শ্রেণিটি সবচেয়ে ভাল জায়গা।