পাইথন / জাভা / 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
ব্যবহারের জন্য ফাংশন নিয়ে আসে এবং এগুলি আপনার মডিউলটিতে সর্বজনীনভাবে প্রকাশ করে