স্কালায় "ফ্ল্যাটম্যাপ যে s ***" অভিব্যক্তি প্রকাশ কোথা থেকে এসেছে?


104

ফ্ল্যাটম্যাপ সম্পর্কে কী এত শক্তিশালী যে এটি স্কালার লোককাহিনীতে এমন স্থানের জন্য প্রাপ্য?


30
[উদ্ধৃতি আবশ্যক]
tstenner

1
সংকলক forভাষা রেফারেন্সে কীভাবে এক্সপ্রেশন পরিচালনা করে সে সম্পর্কে বিভাগটি পড়ুন । এটি কিছু ইঙ্গিত দিতে পারে।
ডার্ক

@ স্টেননার: যতক্ষণ না আমরা টর্স মেমসে ঝুঁকছি: গুগল আপনার বন্ধু।
চক

4
@ wশ্বর্য এটি আরও "আপনার তালিকা / অ্যারে / বিকল্পে কেবল ফ্ল্যাটম্যাপ ব্যবহার করুন" এর মতো, "খারাপ" হিসাবে "ছিটে" নয়
tstenner

1
প্রকৃতপক্ষে, এই নির্দিষ্ট বাক্যাংশটি প্রাসঙ্গিকতার বাইরে নেওয়া হয়েছিল, যেখানে কেউ ম্যানহাটনের কোথাও বার (রিডার) মনাদকে মিস করেছেন ;-) যেমনটি ঘটে যায়, সংক্ষিপ্ত সংস্করণটি আটকে যায়।
রোল্যান্ড কুহ্ন

উত্তর:


55

এই বাক্যাংশের পিছনে যুক্তি হ'ল আপনি যদি / তারপরে / অন্য কোডটি ফ্ল্যাটম্যাপ (এবং অন্যান্য উচ্চতর ক্রিয়াকলাপ) -এ কল দিয়ে লিখতেন তবে আপনি অনেক ক্লান্তিকর স্থান পরিবর্তন করতে পারেন।

এটি বিকল্পগুলির জন্য বিশেষভাবে সত্য (দেখুন http://tonymorris.github.io/blog/posts/scalaoption-cheat-sheet/ )

তবে এটি অন্যান্য মনদেদের ক্ষেত্রেও প্রযোজ্য (যদিও আমাকে স্বীকার করতে হবে, আমি নিজে এখনও বিশদটি নিজেই বুঝতে পারি না)

আপনার কাছে এমন কোনও পরিস্থিতি কল্পনা করুন যেখানে আপনি কোনও ফাংশন (বা ফাংশনগুলির একটি সিরিজ) প্রয়োগ করতে চান যেখানে প্রতিটি ফাংশন বাতিল হতে পারে। আপনি যখন নাল ব্যবহার করবেন তখন আপনার কোড নাল চেকের সাথে ছাঁটাই হয়ে যাবে। তবে আপনি যদি মানগুলির পরিবর্তে বিকল্পগুলি ব্যবহার করেন তবে আপনি কেবলমাত্র একাধিক ফাংশনের ক্ষেত্রে ফাংশনগুলি শৃঙ্খলাবদ্ধ করে কাঙ্ক্ষিত ফাংশনগুলির সাথে মানগুলি ফ্ল্যাটম্যাপ করতে পারেন এবং কেবল ফলাফলগুলি নাল নয় এমন একটি সংগ্রহ পেতে পারেন, যা অনেক ক্ষেত্রে ঠিক একই রকম তুমি চাও.

যেহেতু এই বিবরণটি বরং সংক্ষিপ্ততর পরামর্শকে সংশোধন করা হয়েছে "কেবল ফ্ল্যাটম্যাপ যে ছিটে" নিজেই প্রতিষ্ঠিত।


সংযোগগুলি মোকাবেলায় আমি ব্যক্তিগতভাবে কখনও কখনও তালিকাটি মোনাদ ব্যবহার করি।
ড্যান বার্টন

103

যে গল্পটি আমি শুনেছিলাম তা হ'ল দু'জন প্রধান স্ক্যালার প্রোগ্রামার জুটি বাঁধছিলেন যখন তাদের মধ্যে কেউ এইরকম কিছু কোড লেখা শুরু করলেন:

option match {
    case Some ...

কোন মুহুর্তে অন্যটি বলল "এটি কি? অপেশাদার ঘন্টা? ফ্ল্যাট মানচিত্র যে ছিটে!"

কী সম্পর্কে এত শক্তিশালী flatMap, ভাল ... প্রথমত, এটি মৌলিক মনাদিক অপারেটর। এর অর্থ এটি একটি সাধারণ ক্রিয়াকলাপ, উদাহরণস্বরূপ, ধারকগুলি (যেমন Option, সংগ্রহগুলি, ইত্যাদি), ধারাবাহিকতা, রাজ্য ইত্যাদি দ্বারা ভাগ করা হয় দ্বিতীয়, যখন আপনি একটি ডি-কনস্ট্রাক্ট করতে পারেন Option, তার বিপরীতেflatMap কোনওটি , কোনও মনডাক অপারেশন নয় , তাই এটি ব্যাপকভাবে প্রয়োগ করা যায় না। এছাড়াও, আপনি যে ডেটা ম্যানিপুলেট করছেন তা সম্পর্কে এর জন্য অত্যধিক জ্ঞানের প্রয়োজন।

দ্রষ্টব্য: পূর্বে আমি বলেছিলাম ম্যাচটি তুলনায় ধীর flatMap - বিপরীতটি সত্য হিসাবে সত্য, এই লেখার সময় স্কালার অতি সাম্প্রতিক সংস্করণ পর্যন্ত, ২.১০.১।)


4
আমি অনুমান করি আমি তখনও অপেশাদার সময়ে রয়েছি :-)
গিলাইলে বেলরোজ

69
এই দুটি প্রোগ্রামার আমি এবং পল চিউসানো ছিল।
অ্যাপোক্যালিস্প

1
যদি আমি সঠিকভাবে স্মরণ করি, তবে #gendofklang একই সময়ে টুইটারে নিজেকে প্রকাশ করে না ... যা প্রায়শই ফ্ল্যাটম্যাপের মিস-অ্যাট্রিবিউশনের মূল? আমাদের কিছু ধরণের স্কেলা মেমি উইকির প্রবেশ করা উচিত; কিছু দুর্দান্ত এখন আছে!
টিমোথি

3
@ উইলসার্জেন্ট আমি মনে করি গাছগুলির জন্য বনটি মিস করছি। সুবিধাটি হ'ল এটি রচনা করে । আমার যদি এমন কোনও ফাংশন থাকে যা চারটি মনদেহের উপর নির্ভর করে তবে আমি লিখতে পারি val res = for (a <- ma; b <- mb; c <- mc; d <- md) yield f(a,b,c,d)। আমি আরও মোনাড যোগ করতে পারি, মনদেসগুলি সরাতে পারি এবং এটি একই থাকে। এছাড়াও, মনে রাখবেন তা মধ্যে পচা এই নয় যে String, কিন্তু মধ্যে Option[String]। যদিও, বাস্তবে, এটি মোটেও পচে যায় না। কিছু লোক পাত্রে উদাহরণস্বরূপ পাত্রে ব্যবহার পছন্দ না করার একটি কারণ হ'ল আপনি পাত্রে জিনিসগুলি বাইরে নিয়ে যেতে পারেন, তবে সমস্ত মনাদ আপনাকে এটি করতে দেয় না।
ড্যানিয়েল সি সোব্রাল

1
আপনি এখানে উদ্ধৃত আলোচনার লিঙ্কটি দেখতে পাচ্ছেন: web.archive.org/web/20130627111326/http://beust.com/weblog/2010/…
হাওকেয়ে

12

গুরুত্বপূর্ণ বিষয়টি flatMapহ'ল এটি স্কালার একাকী বিন্যস্ত ক্রিয়াকলাপের প্রতিনিধিত্ব। ওয়েবে মোনাডের উদ্দেশ্য এবং কেন তারা ঠিক এত কার্যকর তা ব্যাখ্যা করার জন্য অসংখ্য টিউটোরিয়াল রয়েছে; জেমস আইরির একটি রয়েছে যা কিছু বিশদে যায়।


4
আমি মনে করি এটি সঠিক উত্তর, Optionঅনেকগুলি flatMapব্যবহারের ক্ষেত্রে এটি। অবশ্যই, যদি আপনি তাদের "প্রাকৃতিক আবাসস্থল" তে মনদেহগুলি পর্যবেক্ষণ করতে চান তবে আপনার হাস্কেল পরীক্ষা করা উচিত। পার্থক্য হ'ল হাস্কেলাররা বলেছেন: "ঠিক >> = ছি ছি!"
ল্যান্ডেই

নিবন্ধটির লিঙ্কটির জন্য ধন্যবাদ, আমি এটি খুব দরকারী বলে মনে করি। আমি স্ক্যালায় প্রোগ্রামিংয়ের "এক্সপ্রেশনগুলির পুনর্বিবেচনার" অধ্যায়টিতে ফিরে গিয়েছিলাম যা লুপগুলি এবং ফিল্টার, মানচিত্র, ফ্ল্যাটম্যাপ এবং ফ্ল্যাটেনের ব্যবহারের জন্য কিছুটা আলোকপাত করে।
গিলিয়াম বেলরোজ

10

রুনার বাজনারসন সেই ব্যক্তি যাকে আপনি উত্সের সন্ধান করছেন।

কেন এটি এত শক্তিশালী তা উপলব্ধি করা এমন একটি বিষয় যা কেবলমাত্র সততার সাথে সময় আসতে পারে। আপনি কীভাবে বারবার চূড়ান্ত ফলাফলের জন্য উদাহরণস্বরূপ (যেমন) ধারাবাহিকভাবে ফ্ল্যাটম্যাপ করবেন তা দেখার জন্য অপশন শ্রেণিটি সবচেয়ে ভাল জায়গা।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.