คำถามติดแท็ก parameter-passing

การส่งผ่านพารามิเตอร์คือกระบวนการกำหนดค่าให้กับพารามิเตอร์ของฟังก์ชัน

30
Java "ผ่านการอ้างอิง" หรือ "pass-by-value" หรือไม่?
ผมคิดเสมอว่าเป็น Java ผ่านโดยการอ้างอิง อย่างไรก็ตามฉันได้เห็นโพสต์บล็อกสองสามตัวอย่าง (ตัวอย่างเช่นบล็อกนี้ ) ที่อ้างว่าไม่ได้ ฉันไม่คิดว่าฉันเข้าใจความแตกต่างที่พวกเขาทำ คำอธิบายคืออะไร

26
ฉันจะส่งผ่านตัวแปรโดยอ้างอิงได้อย่างไร
เอกสาร Python ดูเหมือนไม่ชัดเจนว่าพารามิเตอร์ถูกส่งผ่านโดยการอ้างอิงหรือค่าและรหัสต่อไปนี้สร้างค่าไม่เปลี่ยนแปลง 'ดั้งเดิม' class PassByReference: def __init__(self): self.variable = 'Original' self.change(self.variable) print(self.variable) def change(self, var): var = 'Changed' มีบางอย่างที่ฉันสามารถทำได้เพื่อส่งผ่านตัวแปรโดยการอ้างอิงจริงหรือไม่?

21
** (ดาวคู่ / ดอกจัน) และ * (ดาว / ดอกจัน) ทำอะไรเพื่อพารามิเตอร์
Наэтотвопросестьответына กองมากเกินнарусском : Чтозначит * (звёздочка) и ** двойнаязвёздочкавПитоне? ในคำจำกัดความของวิธีการต่อไปนี้จะทำอะไร*และ**ทำparam2อะไร def foo(param1, *param2): def bar(param1, **param2):

9
ตรวจสอบจำนวนอาร์กิวเมนต์ที่ส่งผ่านไปยังสคริปต์ Bash
ฉันต้องการให้สคริปต์ Bash ของฉันพิมพ์ข้อความแสดงข้อผิดพลาดหากไม่นับจำนวนอาร์กิวเมนต์ที่ต้องการ ฉันลองรหัสต่อไปนี้: #!/bin/bash echo Script name: $0 echo $# arguments if [$# -ne 1]; then echo "illegal number of parameters" fi ด้วยเหตุผลที่ไม่ทราบสาเหตุบางอย่างฉันได้รับข้อผิดพลาดต่อไปนี้: test: line 4: [2: command not found ผมทำอะไรผิดหรือเปล่า?

5
ตัวดำเนินการดาวหมายถึงอะไรในการเรียกใช้ฟังก์ชัน
ตัว*ดำเนินการหมายถึงอะไรใน Python เช่นในโค้ด like zip(*x)หรือf(**k)? วิธีการจัดการภายในล่าม? มีผลต่อประสิทธิภาพหรือไม่? เร็วหรือช้า? มีประโยชน์เมื่อใดและเมื่อใดไม่เป็นประโยชน์? ควรใช้ในการประกาศฟังก์ชันหรือในการโทร?


8
วิธีเขียนสคริปต์ทุบตีที่รับอาร์กิวเมนต์อินพุตเสริมหรือไม่?
ฉันต้องการให้สคริปต์ของฉันสามารถเลือกอินพุตได้ เช่นปัจจุบันสคริปต์ของฉันคือ #!/bin/bash somecommand foo แต่ฉันอยากจะบอกว่า: #!/bin/bash somecommand [ if $1 exists, $1, else, foo ]

4
การขยาย tuples เป็นอาร์กิวเมนต์
มีวิธีในการขยาย Python tuple เป็นฟังก์ชัน - เป็นพารามิเตอร์จริงหรือไม่? ตัวอย่างเช่นexpand()เวทมนตร์ทำที่นี่: some_tuple = (1, "foo", "bar") def myfun(number, str1, str2): return (number * 2, str1 + str2, str2 + str1) myfun(expand(some_tuple)) # (2, "foobar", "barfoo") ฉันรู้ว่าสามารถกำหนดmyfunเป็นmyfun((a, b, c))แต่แน่นอนอาจมีรหัสเดิม ขอบคุณ

10
เหตุใดจึงต้องใช้คำหลักพารามิเตอร์
ฉันรู้ว่านี่เป็นคำถามพื้นฐาน แต่ฉันไม่พบคำตอบ ทำไมต้องใช้ หากคุณเขียนฟังก์ชั่นหรือวิธีการที่ใช้มันเมื่อคุณลบมันรหัสจะยังคงทำงานได้อย่างสมบูรณ์ 100% โดยไม่ต้องใช้มัน เช่น: ด้วย params: static public int addTwoEach(params int[] args) { int sum = 0; foreach (var item in args) sum += item + 2; return sum; } ไม่มีพารามิเตอร์: static public int addTwoEach(int[] args) { int sum = 0; foreach (var item in args) sum …

13
JavaScript: การส่งพารามิเตอร์ไปยังฟังก์ชันเรียกกลับ
ฉันกำลังพยายามส่งพารามิเตอร์บางอย่างไปยังฟังก์ชันที่ใช้เป็นการโทรกลับฉันจะทำเช่นนั้นได้อย่างไร function tryMe (param1, param2) { alert (param1 + " and " + param2); } function callbackTester (callback, param1, param2) { callback (param1, param2); } callbackTester (tryMe, "hello", "goodbye");

7
jQuery's .click - ส่งผ่านพารามิเตอร์ไปยังฟังก์ชันผู้ใช้
ฉันพยายามเรียกใช้ฟังก์ชันที่มีพารามิเตอร์โดยใช้ .click ของ jQuery แต่ฉันไม่สามารถใช้งานได้ นี่คือวิธีที่ฉันต้องการให้ทำงาน: $('.leadtoscore').click(add_event('shot')); สายไหน function add_event(event) { blah blah blah } ใช้งานได้ถ้าฉันไม่ใช้พารามิเตอร์เช่นนี้ $('.leadtoscore').click(add_event); function add_event() { blah blah blah } แต่ฉันต้องสามารถส่งผ่านพารามิเตอร์ผ่านadd_eventฟังก์ชันของฉันได้ ฉันจะทำสิ่งเฉพาะนี้ได้อย่างไร ฉันรู้ว่าฉันสามารถใช้งาน.click(function() { blah }ได้ แต่ฉันเรียกใช้add_eventฟังก์ชันจากหลาย ๆ ที่และต้องการทำเช่นนี้

6
จันดอกจันในฟังก์ชันอาร์กิวเมนต์?
เครื่องหมายดอกจันเปลือยในอาร์กิวเมนต์ของฟังก์ชันทำอะไร เมื่อฉันดูโมดูลดองฉันเห็นสิ่งนี้: pickle.dump(obj, file, protocol=None, *, fix_imports=True) ฉันรู้เกี่ยวกับเครื่องหมายดอกจันเดียวและสองครั้งก่อนหน้าอาร์กิวเมนต์ (สำหรับจำนวนตัวแปรของข้อโต้แย้ง) แต่สิ่งนี้นำหน้าอะไร และฉันค่อนข้างแน่ใจว่ามันไม่มีส่วนเกี่ยวข้องกับการดอง นั่นอาจเป็นเพียงตัวอย่างของเหตุการณ์นี้ ฉันเรียนรู้ชื่อเมื่อฉันส่งสิ่งนี้ให้กับล่ามเท่านั้น: >>> def func(*): ... pass ... File "<stdin>", line 1 SyntaxError: named arguments must follow bare * ถ้ามันเป็นเรื่องสำคัญฉันใช้ python 3.3.0

7
ผ่านวัตถุโดยการอ้างอิงหรือค่าใน C #
ใน C # ฉันคิดเสมอว่าตัวแปรที่ไม่ใช่ดั้งเดิมถูกส่งผ่านโดยการอ้างอิงและค่าดั้งเดิมที่ส่งผ่านตามค่า ดังนั้นเมื่อผ่านไปยังวิธีการใด ๆ ที่ไม่ใช่วัตถุดั้งเดิมสิ่งที่ทำกับวัตถุในวิธีการจะมีผลต่อวัตถุที่ถูกส่งผ่าน (สิ่ง C # 101) อย่างไรก็ตามฉันได้สังเกตเห็นว่าเมื่อฉันส่งวัตถุ System.Drawing.Image ว่าดูเหมือนจะไม่เป็นเช่นนั้น? ถ้าฉันส่งวัตถุ system.drawing.image ไปยังวิธีอื่นแล้วโหลดรูปภาพไปยังวัตถุนั้นให้ปล่อยให้วิธีนั้นพ้นขอบเขตแล้วกลับไปที่วิธีการเรียกใช้อิมเมจนั้นจะไม่ถูกโหลดบนวัตถุดั้งเดิม? ทำไมนี้

7
มีประโยชน์ในการผ่านโดยตัวชี้ไปผ่านโดยอ้างอิงใน C ++?
ประโยชน์ของการผ่านโดยตัวชี้ผ่านการอ้างอิงใน C ++ คืออะไร เมื่อเร็ว ๆ นี้ฉันได้เห็นตัวอย่างจำนวนมากที่เลือกการส่งผ่านอาร์กิวเมนต์ของพอยน์เตอร์แทนที่จะส่งผ่านการอ้างอิง มีประโยชน์ในการทำเช่นนี้? ตัวอย่าง: func(SPRITE *x); ด้วยการโทร func(&mySprite); เมื่อเทียบกับ func(SPRITE &x); ด้วยการโทร func(mySprite);

6
jQuery - เพิ่มพารามิเตอร์เพิ่มเติมในการส่ง (ไม่ใช่อาแจ็กซ์)
ใช้ jQuery's 'ส่ง' - มีวิธีส่งพารามิเตอร์เพิ่มเติมไปยังแบบฟอร์มหรือไม่ ฉันไม่ได้ต้องการทำเช่นนี้กับ Ajax - นี่เป็นเรื่องปกติที่จะส่งแบบฟอร์มการรีเฟรชทั่วไป $('#submit').click(function () { $('#event').submit(function () { data: { form['attendees'] = $('#attendance').sortable('toArray').toString(); }); });

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.