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

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

16
แนวทางปฏิบัติที่ดีที่สุดในการส่งผ่านข้อโต้แย้งไปยังวิธีการ?
ในบางครั้งเราต้องเขียนวิธีการที่ได้รับข้อโต้แย้งมากมายตัวอย่างเช่น: public void doSomething(Object objA , Object objectB ,Date date1 ,Date date2 ,String str1 ,String str2 ) { } เมื่อฉันพบปัญหาประเภทนี้ฉันมักจะรวมข้อโต้แย้งไว้ในแผนที่ Map<Object,Object> params = new HashMap<Object,Object>(); params.put("objA",ObjA) ; ...... public void doSomething(Map<Object,Object> params) { // extracting params Object objA = (Object)params.get("objA"); ...... } นี่ไม่ใช่แนวทางปฏิบัติที่ดีการห่อหุ้มพารามิเตอร์ลงในแผนที่เป็นการสิ้นเปลืองประสิทธิภาพโดยสิ้นเชิง สิ่งที่ดีคือลายเซ็นที่สะอาดง่ายต่อการเพิ่มพารามิเตอร์อื่น ๆ โดยมีการปรับเปลี่ยนน้อยที่สุด แนวทางปฏิบัติที่ดีที่สุดสำหรับปัญหาประเภทนี้คืออะไร

5
เมื่อใดควรใช้ตัวแปรอินสแตนซ์ออบเจ็กต์เทียบกับการส่งอาร์กิวเมนต์ไปยังเมธอด
คุณจะตัดสินใจได้อย่างไรระหว่างการส่งอาร์กิวเมนต์ไปยังเมธอดกับการประกาศเป็นตัวแปรอินสแตนซ์อ็อบเจ็กต์ที่มองเห็นได้สำหรับเมธอดทั้งหมด ฉันชอบเก็บตัวแปรอินสแตนซ์ไว้ในรายการที่ส่วนท้ายของคลาส แต่รายการนี้จะยาวขึ้นเมื่อโปรแกรมของฉันเติบโตขึ้น ฉันคิดว่าถ้ามีการส่งผ่านตัวแปรบ่อยพอก็ควรจะมองเห็นได้สำหรับทุกวิธีที่ต้องการ แต่แล้วฉันก็สงสัยว่า "ถ้าทุกอย่างเป็นสาธารณะก็ไม่จำเป็นต้องส่งอะไรเลย!"

7
Bash: ส่งผ่านฟังก์ชันเป็นพารามิเตอร์
ฉันต้องส่งฟังก์ชันเป็นพารามิเตอร์ใน Bash ตัวอย่างเช่นรหัสต่อไปนี้: function x() { echo "Hello world" } function around() { echo "before" eval $1 echo "after" } around x ควรส่งออก: before Hello world after ฉันรู้ว่าevalไม่ถูกต้องในบริบทนั้น แต่นั่นเป็นเพียงตัวอย่าง :) ความคิดใด ๆ ?

10
การส่งอาร์เรย์เป็นอาร์กิวเมนต์ไปยังฟังก์ชันใน C
ฉันเขียนฟังก์ชันที่มีอาร์เรย์เป็นอาร์กิวเมนต์และเรียกใช้โดยการส่งผ่านค่าอาร์เรย์ดังนี้ void arraytest(int a[]) { // changed the array a a[0]=a[0]+a[1]; a[1]=a[0]-a[1]; a[0]=a[0]-a[1]; } void main() { int arr[]={1,2}; printf("%d \t %d",arr[0],arr[1]); arraytest(arr); printf("\n After calling fun arr contains: %d\t %d",arr[0],arr[1]); } สิ่งที่ฉันพบคือแม้ว่าฉันจะเรียกarraytest()ใช้ฟังก์ชันโดยการส่งผ่านค่า แต่สำเนาต้นฉบับint arr[]ก็เปลี่ยนไป คุณช่วยอธิบายได้ไหมว่าทำไม?

5
จะส่งผ่านพารามิเตอร์ใน 'vagrant up' และให้อยู่ในขอบเขตของ Vagrantfile ได้อย่างไร?
ฉันกำลังมองหาวิธีส่งผ่านพารามิเตอร์ไปยังตำราอาหารของเชฟเช่น: $ vagrant up some_parameter จากนั้นใช้some_parameterหนึ่งในตำราอาหารของเชฟ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.