লুয়ায় গল্ফ করার টিপস


21

লুয়ায় গল্ফ করার জন্য আপনার কাছে কোন সাধারণ টিপস রয়েছে? আমি এমন ধারণাগুলি সন্ধান করছি যা সাধারণভাবে কোড গল্ফ সমস্যার ক্ষেত্রে প্রয়োগ করা যেতে পারে যা লুয়ার জন্য কমপক্ষে কিছুটা নির্দিষ্ট (যেমন "মন্তব্যগুলি সরান" কোনও উত্তর নয়)। দয়া করে উত্তর প্রতি একটি টিপ পোস্ট করুন।


6
টিপস প্রশ্নগুলির সম্প্রদায়ের উইকি হওয়া উচিত। তবে যে কেউ এটিকে "প্রাথমিকভাবে মতামতভিত্তিক" হিসাবে নিকটবর্তী হয়ে জমা দিয়েছিল, ভাষা সংক্রান্ত প্রশ্নগুলির জন্য গল্ফিংয়ের টিপসগুলি সেই নিয়মের কাছে আমাদের গ্রহণযোগ্য ব্যতিক্রম। এই প্রশ্নের মুক্ত প্রকৃতির প্রকৃতি হ'ল তারা কেন সম্প্রদায়ের উইকি-এড হয়।
জোনাথন ভ্যান মাত্রে

উত্তর:


9

ইতোমধ্যে পোস্ট হওয়াগুলি ছাড়াও, কিছু নির্দিষ্ট কৌশল যা আমি সময়ের সাথে সাথে সংগ্রহ করেছি, কোনও নির্দিষ্ট ক্রমে ...

  • ফাংশন কলগুলির জন্য যেগুলিতে কেবল একটি চিহ্ন দ্বারা সীমিত একটি প্যারামিটার রয়েছে ( "স্ট্রিংগুলির {জন্য, টেবিলগুলির জন্য), প্যারামিটারটি বন্ধনীগুলির চারপাশে মোড়ানো প্রয়োজন হয় না।
    উদাহরণস্বরূপ, না করার পরিবর্তে print("hello"), আপনি সহজভাবে এটি করতে পারেন:print"hello"

  • যতটা সম্ভব হোয়াইটস্পেস সরিয়ে ফেলুন - এটি বিশেষত এমন প্রতীকের পরে করা সহজ যা স্ট্রিংগুলি বন্ধ করে দেয় (বা একটি উদ্বোধনের আগে), ফাংশন কল, টেবিল ... আপনি
    পরিবর্তে এটি print(42) a=1করতে পারেন print(42)a=1। অন্যান্য উদাহরণ: print(a and-1 or-2)

  • আপনি যখন পারেন টেরিনারি অপারেটরটি ব্যবহার করুন! পরিবর্তে if a>0 then print("hello") else print("goodbye") end, পছন্দ print(a>0 and "hello" or "goodbye")। আরও তথ্য এখানে
    (এটি আসলে আরও উন্নত হতে পারে print(a>0 and"hello"or"goodbye"):)

  • আপনি যখন করতে পারেন তখন কোলন-কল সিনট্যাকটিক চিনি ব্যবহার করুন: পরিবর্তে string.rep(str,12), করুন str:rep(12)। এটি নন-ভেরিয়েবলগুলিতেও এইভাবে কাজ করে (এবং কেবল এই পথে):("a"):rep(5)

  • পরিবর্তে tonumber(str)শুধু নাstr+0

  • কোনও পরামিতিবিহীন ক্রিয়াকলাপগুলির জন্য, তাদের স্বাভাবিক উপায় ( function tick() blabla() end) নির্দিষ্ট করার পরিবর্তে আপনি এটি করতে পারেন: ticks=loadstring"blabla()"যা সামগ্রীর উপর নির্ভর করে 1 বা আরও বেশি বাইট সাশ্রয় করে। এছাড়াও, আপনি যদি একাধিক ফাংশন সংজ্ঞায়িত করেন তবে এর loadstringআগে 1-চর ভেরিয়েবলে স্থানীয়করণ করুন এবং আপনি প্রচুর বাইট সংরক্ষণ করবেন;)। এই কৌশলটির জন্য ক্রেডিট জিম বাউভেনসকে।

  • লুয়া শর্তসাপেক্ষ পরীক্ষায় খালি স্ট্রিং (এবং 0অন্যান্য ভাষাগুলির তুলনায় খুব বেশি) সত্য বলে বিবেচনা করে, সুতরাং উদাহরণস্বরূপ, না করে বরং while 1 do ... end1 টি বাইট লিখে লিখে সংরক্ষণ করুনwhile''do ... end


(লোডস্ট্রিং ট্রিক যুক্ত করা হয়েছে)
অ্যাড্রিউব

2
0 সত্যবাদী মান হওয়া কেবল নির্বোধ
সুপারজেডি 224

আর একটি str+0সমতুল্য ~~str, এর অগ্রাধিকারের জন্য দরকারী হতে পারে
ফিলিপ নারদী বাটিস্তা

@ ফিলিপনার্দিবাটিস্তা তবে এটি কেবল লুয়া
5.3+

5

আমি ইতিমধ্যে একটি সম্পর্কে চিন্তা করেছি। আমি জানি না এটি অন্য কয়েকটি ভাষায় কাজ করে কিনা, তবে লুয়া হ'ল আমি জানি যা আপনাকে ভেরিয়েবলগুলিতে ফাংশন সংরক্ষণ করতে দেয়। সুতরাং যদি উদাহরণস্বরূপ string.subআপনার প্রোগ্রামে একাধিকবার ব্যবহৃত হয়, উদাহরণস্বরূপ ব্যবহার করুন s=string.sub


4
এটি পাইথন এবং রুবির মতো আরও অনেক ভাষায় কাজ করে।
nyuszika7h

4
জাভাস্ক্রিপ্ট এবং হাস্কেলের ফাংশনের মানও থাকতে পারে।
গর্বিত হাসেলেলার

এই সমতূল্য s=("").subবা s=a.subকোনো পরিবর্তনশীল জন্য aধারণকারী স্ট্রিং মান।
ডিম স্ক্রিপটুনফ

একে প্রথম শ্রেণির ফাংশন বলা হয়
রেডউল্ফ প্রোগ্রামস

5

এটি গল্ফ করার জন্য একটি সুন্দর ভার্জোজ ভাষা ... তবে কিছু সাধারণ টিপস যা মনে আসে তা হ'ল:

  • শর্তসাপেক্ষ এড়ানোর চেষ্টা করুন, যেহেতু if... then... else... endএকটি বড় অপচয় waste
  • পরিবর্তে, ভাষা নির্মান যে খাটো, যেমন ফোকাস করতে চেষ্টা for i=1,5 do
  • #অপারেটর golfing জন্য সুন্দর মহান (এবং সাধারণভাবে) হয়।

5

আপনার অসীম লুপটি ছোট করুন

যখন আপনাকে একটি অসীম লুপ ব্যবহার করতে হবে, আপনি এ ব্যবহার করার কথা ভাবতে পারেন whileতবে পরিবর্তে একটি লেবেল ব্যবহার করা 2 বাইট দ্বারা সংক্ষিপ্ত হবে:

while''do end
::a::goto a

যতটা সম্ভব কম স্থান ব্যবহার করুন

আপনার কোড থেকে আরও শূন্যস্থান সরাতে আপনি (আব) ব্যবহার করতে পারেন এমন একটি সাধারণ জিনিস রয়েছে। লুয়ার চশমা আপনি ভেরিয়েবলগুলিকে যে নাম দিবেন সে সম্পর্কে স্পষ্ট: তাদের একটি চিঠি দিয়ে শুরু করতে হবে। এটি বোঝায় যে, কখনও কখনও আপনি সংখ্যা এবং ফাংশন / ভেরিয়েবলের মধ্যে ফাঁকা স্থান ছেড়ে যেতে পারেন

x=0>1 and 0or 1print(x)

স্থানটি সরিয়ে নেওয়ার সম্ভাবনাটি সংখ্যাটির পরে থাকা চিঠির উপর নির্ভর করে, এই চিঠিটি আপনাকে এটি করতে দেয় না:

a,b,c,d,e,f            -- They would be interpreted as hexadecimal
x                      -- only fail when after a 0, other number are fine
                       -- (0x indicates the following is an hexadecimal number)

এটি ব্যবহার করে এবং আপনি কীভাবে আপনার ভেরিয়েবলগুলিকে কল করেন সেদিকে মনোনিবেশ করে আপনি আপনার উত্স কোডগুলির বেশিরভাগ স্থানকে মুক্ত করতে পারেন।

ইতিমধ্যে এখানে একটি উদাহরণ তুলে নেওয়া, এবং এই পরামর্শটি ব্যবহার করে, আপনি শেভ করতে পারেন এমন আরও একটি বাইট এখানে :)

print(a and-1 or-2)
print(a and-1or-2)

সঠিক ইনপুট পদ্ধতিটি ব্যবহার করুন

আমরা যদি বয়লারপ্লেটটি দেখে এবং প্রতিটি বড় ধরণের ইনপুটটির জন্য ব্যয় করি তবে আমাদের যা আছে তা এখানে:

function f(x)x end
io.read()
arg[1]

এই পদ্ধতির প্রত্যেকটি আমাদের সবচেয়ে বেশি ব্যয়যুক্ত ফাংশনটির সাথে 1 টি ইনপুট নিতে দেয় (তবে আমাদের ইনপুট হিসাবে একটি টেবিল নিতে দেয়)

আমরা এখন দেখতে পাচ্ছি যে কমান্ড-লাইন আর্গুমেন্টটি ব্যবহার করা যদি আপনি গল্ফ করতে চান তবে যেতে হবে তবে সচেতন হন: এটি আরও খাটো হতে পারে

arg[1]
...

...Lua একটু বিশেষ, এটি একটি ভেরিয়েবলের প্যাক না সামগ্রী সমন্বিত এর arg, অথবা একটি variadic ফাংশন ক্ষেত্রে প্যাক না প্যারামিটার।

যখন আপনাকে একাধিক ইনপুট পেতে হবে এবং সেগুলির প্রতিটি ব্যবহার করতে হবে তখন তাদের পরিবর্তনশীলে সংরক্ষণ করা ভাল। ভেরিয়েবলগুলিতে 2 ইনপুট সংরক্ষণের কিছু উপায় এখানে রয়েছে

a=arg[1]b=arg[2]    -- highly un-efficient, costs 8 bytes by variable
a,b=unpack(arg)     -- costs 15, but at least doesn't depends on the number of argument
a,b=...             -- only costs 7

এবং এখানে ভেরিয়েবলগুলি ছাড়াই আপনি সংক্ষিপ্ততম কল করতে পারেন:

...     -- using a allow a gain of 1-2 bytes at each use
arg[2]  -- using b allow a gain of 4-5 bytes at each use

যেখানে আপনার 3 টি যুক্তি রয়েছে, বা যখন আপনি 2 টি যুক্তি ব্যবহার করেন, তার সাথে দুটি ব্যবহার করা হয়, আপনি ইতিমধ্যে বাইটগুলি পেয়ে যাচ্ছেন a,b=...! :)

প্রায় কখনই ব্যবহার না করলে!

যদি / ifif / if বিবৃতি ব্যবহারের ক্ষেত্রে কোনও স্ত্রনীর চেয়ে কম খরচ হয় তবে এরকম কোনও ঘটনা নেই near এই জাতীয় বিবৃতি দেওয়ার জন্য বয়লারপ্লেটটি সত্যই ভারী:

-- exemple with dumb values
if 1>0then v=1 else v=0 end
v=1>0 and 1or 0

একটি সাধারণ উদাহরণ সহ, আপনি ইতিমধ্যে 12 বাইট সংরক্ষণ করেছেন, যখন আপনাকে অন্য কিছু করতে হবে, এটি আরও এবং আরও গুরুত্বপূর্ণ হয়ে ওঠে, তাই সে সম্পর্কে সচেতন হন!

এছাড়াও, লুয়ার অংশগুলি বিশেষ , তারা কীভাবে কাজ করে তার কিছু শর্ত রয়েছে, আগ্রহীদের জন্য, আমি এটি নীচে ব্যাখ্যা করব:

লুয়ার টেরিনারিগুলি ফর্মের <condition> and <case true: have to be a true value> or <case false: can be anything>

প্রথমত, আসুন সত্যের টেবিলটি দেখুন or। একটি orএকটি ফাংশন হিসাবে বিবেচিত হতে পারে: এটা সর্বদা কোন মান ফিরিয়ে, এখানে মান এটা ফেরৎ দেওয়া হল:

x | y ||x or y
------||-------
0 | 0 ||   y
0 | 1 ||   y
1 | 0 ||   x
1 | 1 ||   x

এটিই আমাদের আমাদের তিনটি নির্মাণের অনুমতি দেয়।

andযা আমাদের অবস্থা মূল্যায়ন করার অনুমতি দেয়, এটা সবসময় ফিরে আসবে yযদি x and yমূল্যায়ন সত্যতে।

এটির সাথে সমস্যাটি হ'ল এটি ব্যর্থ হবে যদি আমরা চাই nilবা falseশর্তের পরে ফিরে আসি false। উদাহরণস্বরূপ, শর্তটি সত্য হওয়া সত্ত্বেও নিম্নলিখিতগুলি সর্বদা 5 টি ফিরে আসবে।

v = true and false or 5

এটি কীভাবে কাজ করে তা ব্যাখ্যা করার জন্য এখানে একটি ত্রৈমাসিকের ধাপে ধাপে মূল্যায়ন করা (আপনি যখন তাদের বাসা বাঁধতে হবে তখন এটি কার্যকর হবে :))

-- let's use our dumb ternary
= true and false or 5
-- and statement will be evaluated first, leading to
= false or 5
-- and we saw how the or works
= 5

উত্তর প্রতি এক টিপস, দয়া করে।
এটাকো

নোট করুন যে "সম্ভব হিসাবে কম স্থান ব্যবহার করুন" কৌশলটি কেবল লুয়া 5.2 এবং তারপরে কাজ করে।
অ্যাড্রিউব

4

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


পরিবর্তনশীলগুলিতে পুনরাবৃত্তি ফাংশন বরাদ্দ করুন

লুয়া আপনাকে ভেরিয়েবলগুলিতে ফাংশন নির্ধারণ করতে দেয়। এমনকি একটি অক্ষর ভেরিয়েবল। এর অর্থ আপনি যদি এই ফাংশনটিকে string.sub(x, y)দু'বারের বেশি পুনরাবৃত্তি করেন তবে আপনি এটিকে একটি ভেরিয়েবলকে বরাদ্দ করে একটি সুবিধা পাবেন।

কোনও ভেরিয়েবল (characters৯ টি অক্ষর) নিযুক্ত না করে:

print(string.sub(x, y))
print(string.sub(x, y))
print(string.sub(x, y))

একটি চলক (51 অক্ষর) বরাদ্দ করা:

s=string.sub
print(s(x,y))
print(s(x,y))
print(s(x,y))

এমন কিছু ঘটনা রয়েছে যেখানে আপনি এটিকে আরও একধাপ এগিয়ে নিয়ে যেতে পারেন। লুয়া কোনও ওওপিকে ম্যানিপুলেশনগুলিতে স্ট্রিংয়ের মঞ্জুরি দেয়, যেমন: str:sub(x, y)বা str.sub(x, y)এটি আমাদের কোডের জন্য নতুন বিকল্প খোলে। আপনি উল্লিখিত (46 অক্ষর।) হিসাবে রেফারেন্স দ্বারা ফাংশন একটি পরিবর্তনশীল বরাদ্দ করতে পারেন

s=z.sub
print(s(x, y))
print(s(x, y))
print(s(x, y))

স্ট্রিংকে বিশ্লেষণের জন্য সবচেয়ে কার্যকর উপায় ব্যবহার করুন

আপনি একটি forলুপ ব্যবহার করতে এবং string.subলুয়াতে অক্ষর অনুসারে চরিত্র পুনরাবৃত্তি করতে পারেন। কখনও কখনও এটি আপনার প্রয়োজনের উপর নির্ভর করে সেরা কাজ করতে পারে তবে অন্যান্য সময়, স্ট্রিং.gmatch কম অক্ষরে কাজ করবে। উভয়ের উদাহরণ এখানে:

s=io.read()
for a = 1, s:len() do
    print(s:sub(a, a))
end 

for i in io.read():gmatch('.') do
    print(i)
end

এবং যখন গল্ফ করা হয় তখন পার্থক্যটি আরও উল্লেখযোগ্য:

s=io.read()for a=1,s:len()do print(s:sub(a, a))end

for i in io.read():gmatch'.'do print(i)end

হোয়াইটস্পেস অপ্টিমাইজ করার জন্য অ্যাসাইনাইজেশনগুলি পুনর্গঠন করুন

লুয়ায়, আপনাকে একটি বন্ধকৃত বন্ধনী বা শেষের উদ্ধৃতি চিহ্ন এবং পরবর্তী অক্ষরের মধ্যে কোনও স্পেস অক্ষর রাখতে হবে না। এখনও অবধি, আমি দুটি ক্ষেত্রে খুঁজে পেয়েছি যেখানে এটি পুনরুদ্ধার করার সাথে সাথে অক্ষরগুলি কেটে যাবে।

  • ভেরিয়েবল বরাদ্দ করা হচ্ছে:

     x,y=io.read(),0 print(x)
     vs.
     y,x=0,io.read()print(x)
    
  • যদি বিবৃতি:

     if x:sub(1,1)==1 then
     vs
     if 1==x:sub(1,1)then
    

সম্ভব কয়েকটি স্বল্প অক্ষর ফিরিয়ে দিন

যদি আপনাকে অবশ্যই একটি সত্য বা মিথ্যা মান প্রত্যাবর্তন করতে হয়, তবে মনে হয় আপনাকে অবশ্যই প্রয়োজনীয় ফেরতের মূল্যের জন্য কমপক্ষে 5 টি অক্ষর ব্যবহার করতে হবে। বাস্তবে নিম্নলিখিতটি ঠিক তেমন কাজ করে:

return true
return false
vs
return 1>0
return 0>1

দুর্দান্ত টিপস, আমি আপনার পোস্টে সম্পাদনার পরামর্শ দেওয়ার জন্য স্বাধীনতা নিয়েছি। শুধু nilএবং falseমূল্যায়ন Lua মিথ্যা হয়, অন্য সব কিছুর সত্য, তাই প্রতিস্থাপন সম্পর্কে আপনার টিপস x==0, x==""এবং x==''দ্বারা xমিথ্যা। আমি বর্তমানে এটি পরিবর্তন করছি nil:)।
কাটেনকিও

আহ, আপনি ঠিক বলেছেন। এটি ঠিক করার জন্য আপনাকে ধন্যবাদ!
Skyl3r 13

2

এগুলি কেবল লুয়া (আমার মনে হয়) অপ্টিমাইজেশন:

স্ট্রিংগুলি গাণিতিক ক্রিয়াকলাপ করার সময় সেগুলিকে স্বয়ংক্রিয়ভাবে সংখ্যায় রূপান্তরিত হয়। শুধু শর্তাধীন বিবৃতি দেখুন, তারা স্বয়ংক্রিয়ভাবে রূপান্তর করে না। স্থান সাশ্রয় করার সময় ব্যবহারকারীর ইনপুটটিকে সংখ্যা হিসাবে গ্রহণের জন্য এটি দুর্দান্ত।

দুটি ভেরিয়েবলের বিষয়বস্তু স্যুইচ করার জন্য অস্থায়ী ভেরিয়েবলের প্রয়োজন হয় না। a,b=b,aa এবং b এর মানগুলি অদলবদল করবে।

এছাড়াও, উপরে যা বলা হয়েছিল সেগুলি প্রসারিত করতে, কোনও বর্ণানুক্রমিক অক্ষর একটি অক্ষরবিহীন অক্ষরকে স্পর্শ করতে পারে। সুতরাং a,b=io.read():match"(.+)/(.+)"u,v=a,bএকটি নিখুঁত, স্ক্রিপ্ট কাজ, এমনকি হোয়াইটস্পেস অভাব সাথে।


2

লোকাল ভেরিয়েবল অ্যাসাইনমেন্ট একত্রিত করুন

পরিবর্তে:

local a=42
local b=17
local c=99

সমান্তরাল কার্যভার ব্যবহার করুন:

local a,b,c=42,17,19

প্রতিটি পরিবর্তনশীল জন্য 6 বাইট সংরক্ষণ করা!

অব্যবহৃত ফাংশন পরামিতিগুলির মাধ্যমে স্থানীয় চলকগুলি ঘোষণা করুন la

পরিবর্তে:

function foo(a,b) local c,d ... end
function bar(a,b) local c,d=42,17 ... end

ব্যবহার

function foo(a,b,c,d) ... end
function bar(a,b,c,d) c,d=42,17 ... end

6 টি বাইট সংরক্ষণ করা হয়েছে (প্রতিটি ভেরিয়েবলের জন্য মাইনাস 1-2 বাইট যা নকল হতে পারে)।


1
ডাউনভোটেড কারণ localগল্ফ করার সময় ব্যবহারটি ন্যায়সঙ্গত হওয়ার কোনও ঘটনা নেই , কারণ আপনাকে কেবল আলাদা নাম ব্যবহার করতে হবে। স্থানীয়দের ব্যবহারের ফলে লাভবান হতে পারে এমন কিছু মারার আগে আমরা 7 টি চর্যাচটার সংমিশ্রণ সহ স্ট্রিং ইনডেক্স সহ 7 টি চ্যারচটার এবং টেবিলের সমস্ত নাম ব্যবহার করতে পারি
কেটেনকিও

1

ভারিয়াদিক ফাংশন

মূল ভ্যারিয়্যাডিক ফাংশন যা আপনাকে ঝামেলা করবে print()। উদাহরণস্বরূপ, আপনি যখন এটি বরাবর String.gsub()এটি ব্যবহার করবেন তখন আপনার সংশোধিত স্ট্রিংটি প্রিন্ট করবে এবং কতবার gsubট্রিগার হয়েছে।

দ্বিতীয় আউটপুট দমন করতে, gsubকেবলমাত্র একটি মান ফেরত দিতে বাধ্য করার জন্য আপনার পেরেনগুলিতে সজ্জিত করুন

print(String.gsub("aa",".","!"))    -- outputs "!!    2\n"
print((String.gsub("aa",".","!")))  -- outputs "!!\n"

1

আউটপুট কীভাবে জানুন Know

লুয়াতে আউটপুট দেওয়ার দুটি মূল পদ্ধতি রয়েছে

io.write()    -- outputs without trailing newline
print()       -- outputs with trailing new line and shorter by 3 bytes

যখন আপনাকে একাধিকবার কনটেনেট করতে হবে, তখন আপনি io.write()স্ট্যান্ডার্ড কনটেনটেশন অপারেটরের পরিবর্তে একটি বর্ণের ভেরিয়েবল ব্যবহার করে এটি সংক্ষিপ্ত করতে পারেন..

i(a)    -- i was defined as io.write
s=s..a

কিছুটা সামনের টাকা দেওয়ার সময় আপনি প্রতিটি কলটিতে 2 বাইট অর্জন করেন

i=io.write  -- longer by 6 bytes
s=""

আপনি এমনকি তৃতীয় উপসংহারে রয়েছেন এবং চতুর্থ স্থানে বাইট অর্জন শুরু করুন।



@ ওয়াল ওয়াও, আমি জানি না আমি কীভাবে এই ভুলটি করতে পারি। এটি নির্দেশ করার জন্য ধন্যবাদ, আমি সম্পাদনা করব
ক্যাটেনকিও

1

কোনও বিশেষ ক্রমে একগুচ্ছ টিপস:

  • stringবেশ দীর্ঘ নাম। দক্ষতার সাথে, ('').charহিসাবে একই string.char। আপনি যদি ভেরিয়েবলের উপর সেমিকোলনের সাথে একসাথে এটি ব্যবহার করেন তবে আরও ভাল ফলাফল অর্জন করা যেতে পারে:a=...; print(a:sub(1, 5)) তবে কিছু stringফাংশন স্ট্রিংগুলিকে ইনপুট হিসাবে গ্রহণ করে না।
  • লুয়ার বেশিরভাগ ক্ষেত্রে স্ট্রিং এবং সংখ্যার মধ্যে স্বয়ংক্রিয় রূপান্তর রয়েছে tonumber এবং +0প্রায়শই কেবল বাইটগুলি অপচয় করে।
  • সর্বদা এর load'your function code here'পরিবর্তে ব্যবহার করুন function()your function code here end...ভিতরে ব্যবহার করে ফাংশন আর্গুমেন্ট অ্যাক্সেস করুন ।
  • লুয়ায় কিছু স্ট্রিং ফাংশন অনিচ্ছাকৃত উপায়ে ব্যবহার করা যেতে পারে! উদাহরণস্বরূপ, a:gsub('.',load'my function')একটি স্ট্রিংয়ের মধ্যে অক্ষরের উপর পুনরাবৃত্তি করার সবচেয়ে সংক্ষিপ্ততম উপায় বলে মনে হচ্ছে
  • স্ট্রিং ইঞ্জিনটি শক্তিশালী হওয়ার সাথে সাথে ব্যবহারকারীদের ইনপুটটিকে নিদর্শন হিসাবে ব্যবহার করার সময় এর শক্তি থেকে সাবধান থাকুন! সে কারণে আপনাকে ব্যবহার করতে হতে পারে a:find('.',1,1)(এই ইস্যুটির জন্য পরীক্ষা করতে, %আপনার ইনপুটটির বিভিন্ন স্থানে চেষ্টা করে ফলাফল দেখুন)। লুয়া নিদর্শন হিসাবে ইনপুট পার্স করার চেষ্টা করার কারণে অসংখ্য ধারণাগুলি ভেঙে গেছে।
  • nilতিনটি বাইট, _এটি একটি (এটি কেবলমাত্র এলোমেলো নাম যা সম্ভবত উপস্থিত নেই)। এছাড়াও, যে কোনও অঙ্ক সত্যবাদী মান হিসাবে কাজ করবে।
  • পিছনে আপনার যুক্তি জানুন x and i or o। এটি কেবল একটি বার্ষিক অপারেটর নয় - এটি একটি সম্পূর্ণ লজিক্যাল এক্সপ্রেশন। প্রকৃতপক্ষে, এর অর্থ নিম্নলিখিতটির: "যদি xসত্যবাদী iহয় তবে চেষ্টা করুন x সুতরাং iসত্যবাদী না হলে, ফলাফল হয় o। এছাড়াও, উভয় andবা orঅংশ বাদ দেওয়া যেতে পারে (x and i ,x or o )।
  • পরিবর্তে এক দ্বারা ব্যবহারের পূর্ণসংখ্যা বিভাজন math.floor: 5.3//1==5.0। অনুগ্রহ করে নোট করুন যে ফলাফলটি সর্বদা একটি ইনপুট ধরণের (পূর্ণসংখ্যা / ভাসা) অনুসরণ করে।

1
"এছাড়াও, যে কোনও অঙ্ক সত্যের মান হিসাবে কাজ করবে।" কেবল এটি বিশদভাবে জানাতে চেয়েছিলেন যে এর মধ্যে 0 রয়েছে যা কোনও সি / সি ++ ব্যাকগ্রাউন্ডের কিছু কোডারের কাছে খুব স্বজ্ঞাত নয়।
ouflak
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.