পাইথন / জাভা / Golang ভাষা থেকে পটভূমি সঙ্গে, importবনাম useআমার বিশৃঙ্খলা শুরু হয়ে গিয়েছিল। এটি কিছু ঘোষণামূলক ভাষার উদাহরণ সহ কোড পুনঃব্যবহারের প্রক্রিয়াটি ব্যাখ্যা করবে।
আমদানি
সংক্ষেপে, এলিক্সিতে, আপনাকে মডিউলগুলি আমদানি করতে হবে না। সমস্ত পাবলিক ফাংশন সম্পূর্ণ যোগ্যতাযুক্ত মোডিয়ুল দ্বারা অ্যাক্সেস করা যায় F ফাংশন সিনট্যাক্স:
iex()> Integer.mod(5, 2)
1
iex()> String.trim(" Hello Elixir ")
"Hello Elixir"
পাইথন / জাভা / গোলংয়ে, আপনাকে import MODULEএই মডুলিতে যেমন ফাইথন ব্যবহার করতে পারে তার আগে আপনার প্রয়োজন
In []: import math
In []: math.sqrt(100)
Out[]: 10.0
তারপরে importএলিক্সারের যা কিছু হতে পারে তা আপনাকে অবাক করে দিতে পারে:
আমরা যখনই পুরোপুরি যোগ্যতাসম্পন্ন নামটি ব্যবহার না করে সহজেই অন্যান্য মডিউল থেকে ফাংশন বা ম্যাক্রো অ্যাক্সেস করতে চাই আমরা আমদানি ব্যবহার করি
https://elixir-lang.org/getting-started/alias-require-and-import.html#import
সুতরাং আপনি টাইপ করতে চান তাহলে sqrtপরিবর্তে Integer.sqrt, trimপরিবর্তে String.trim, importইচ্ছা সাহায্যের
iex()> import Integer
Integer
iex()> sqrt(100)
10.0
iex()> import String
String
iex()> trim(" Hello Elixir ")
"Hello Elixir"
এটি কোড পড়ার ক্ষেত্রে সমস্যা তৈরি করতে পারে এবং যখন নাম বিরোধী রয়েছে তাই এরলং (এলিক্সির প্রভাবিত ভাষা) এর ক্ষেত্রে এটি প্রস্তাবিত নয় । তবে এলিক্সিরে এমন কোনও কনভেনশন নেই, আপনি এটি নিজের ঝুঁকিতে ব্যবহার করতে পারেন।
পাইথনে, একই প্রভাব দ্বারা করা যেতে পারে:
from math import *
সংক্ষিপ্ত / দ্রুত টাইপ করার জন্য - এটি কেবলমাত্র কিছু বিশেষ পরিস্থিতিতে / ইন্টারেক্টিভ মোডে ব্যবহার করার পরামর্শ দেওয়া হয় recommended
ব্যবহার এবং প্রয়োজন
যা ভিন্ন use/ requireভিন্ন হয় তা হ'ল তারা "ম্যাক্রো" - যে ধারণাটি পাইথন / জাভা / গোলং ... পরিবারে বিদ্যমান নয় তার সাথে সম্পর্কিত।
আপনি প্রয়োজন হবে না importউহার কার্যাবলী ব্যবহার করার জন্য একটি মডিউল, কিন্তু আপনি প্রয়োজন requireতার ম্যাক্রো ব্যবহার করার জন্য একটি মডিউল :
iex()> Integer.mod(5, 3) # mod is a function
2
iex()> Integer.is_even(42)
** (CompileError) iex:3: you must require Integer before invoking the macro Integer.is_even/1
(elixir) src/elixir_dispatch.erl:97: :elixir_dispatch.dispatch_require/6
iex()> require Integer
Integer
iex()> Integer.is_even(42) # is_even is a macro
true
যদিও is_evenএটি একটি সাধারণ ফাংশন হিসাবে লেখা যায় তবে এটি ম্যাক্রো কারণ:
এলিক্সিতে, ইন্টিজার.আইস_ওডি / 1 ম্যাক্রো হিসাবে সংজ্ঞায়িত করা হয় যাতে এটি প্রহরী হিসাবে ব্যবহার করা যায়।
https://elixir-lang.org/getting-started/alias-require-and-import.html#require
use, এলিক্সির ডক থেকে উদ্ধৃত অংশ:
ব্যবহারের জন্য প্রদত্ত মডিউলটি প্রয়োজন এবং তারপরে __using__/1কলব্যাক কল করে মডিউলটিকে বর্তমান প্রসঙ্গে কিছু কোড ইনজেক্ট করার অনুমতি দেয়।
defmodule Example do
use Feature, option: :value
end
সংকলিত হয়
defmodule Example do
require Feature
Feature.__using__(option: :value)
end
https://elixir-lang.org/getting-started/alias-require-and-import.html#use
তাই লেখালেখি লেখার use Xমতোই
require X
X.__using__()
use/2 একটি ম্যাক্রো , ম্যাক্রো কোডটি আপনার জন্য অন্যান্য কোডে রূপান্তর করবে।
আপনি use MODULEযখন চাইবেন :
- এর ম্যাক্রোগুলি অ্যাক্সেস করতে চান (
require)
- এবং এক্সিকিউট
MODULE.__using__()
এলিক্সির 1.5 তে পরীক্ষা করা হয়েছে
import Moduleআপনার মডিউলটির অভ্যন্তরে ব্যবহৃত ফাংশন আনবে।use Moduleব্যবহারের জন্য ফাংশন নিয়ে আসে এবং এগুলি আপনার মডিউলটিতে সর্বজনীনভাবে প্রকাশ করে