คำถามติดแท็ก variable-assignment

กระบวนการตั้งค่าหรือกำหนดค่าใหม่ที่จัดเก็บในตำแหน่งที่จัดเก็บซึ่งแสดงด้วยชื่อตัวแปร


2
ฉันจะทำอย่างไรกับวัตถุที่ถูกย้ายจาก?
มาตรฐานกำหนดสิ่งที่ฉันสามารถทำกับวัตถุได้อย่างแม่นยำเมื่อมันถูกย้ายจากหรือไม่? ฉันเคยคิดว่าทุกสิ่งที่คุณสามารถทำได้ด้วยวัตถุที่ย้ายจากไปนั้นทำลายมัน แต่นั่นก็ไม่เพียงพอ ตัวอย่างเช่นใช้เทมเพลตฟังก์ชันswapตามที่กำหนดไว้ในไลบรารีมาตรฐาน: template <typename T> void swap(T& a, T& b) { T c = std::move(a); // line 1 a = std::move(b); // line 2: assignment to moved-from object! b = std::move(c); // line 3: assignment to moved-from object! } เห็นได้ชัดว่ามันจะต้องเป็นไปได้ที่จะกำหนดให้กับการย้ายจากวัตถุมิฉะนั้นบรรทัดที่ 2 และ 3 จะล้มเหลว แล้วฉันจะทำยังไงกับวัตถุที่ถูกย้าย? ฉันจะหารายละเอียดเหล่านี้ได้จากที่ไหน? (อย่างไรก็ตามทำไมมันT c …

2
กำหนดหลายคอลัมน์โดยใช้: = ใน data.table ตามกลุ่ม
วิธีที่ดีที่สุดในการกำหนดให้หลายคอลัมน์โดยใช้data.tableคืออะไร? ตัวอย่างเช่น: f <- function(x) {c("hi", "hello")} x <- data.table(id = 1:10) ฉันต้องการทำสิ่งนี้ (แน่นอนว่าไวยากรณ์นี้ไม่ถูกต้อง): x[ , (col1, col2) := f(), by = "id"] และเพื่อขยายนั้นฉันอาจมีหลายคอลัมน์ที่มีชื่อเก็บไว้ในตัวแปร (พูดcol_names) และฉันต้องการทำ: x[ , col_names := another_f(), by = "id", with = FALSE] อะไรคือวิธีที่ถูกต้องในการทำสิ่งนี้?

5
Linux bash: การกำหนดตัวแปรหลายตัว
มีอยู่ใน linux bash ซึ่งคล้ายกับโค้ดต่อไปนี้ใน PHP: list($var1, $var2, $var3) = function_that_returns_a_three_element_array() ; กล่าวคือคุณกำหนดค่าที่สอดคล้องกันให้กับตัวแปร 3 ตัวในประโยคเดียว สมมติว่าฉันมีฟังก์ชัน bash myBashFuntionที่เขียนเพื่อ stdout สตริง "qwert asdfg zxcvb" เป็นไปได้ไหมที่จะทำสิ่งต่างๆเช่น: (var1 var2 var3) = ( `myBashFuntion param1 param2` ) ส่วนที่อยู่ทางซ้ายของเครื่องหมายเท่ากับไม่ใช่ไวยากรณ์ที่ถูกต้องแน่นอน ฉันแค่พยายามอธิบายสิ่งที่ฉันขอ สิ่งที่ได้ผลมีดังต่อไปนี้: array = ( `myBashFuntion param1 param2` ) echo ${array[0]} ${array[1]} ${array[2]} แต่อาร์เรย์ที่จัดทำดัชนีจะไม่สามารถอธิบายได้เหมือนกับชื่อตัวแปรธรรมดา อย่างไรก็ตามฉันสามารถทำได้: var1 = …

7
ลำดับความสำคัญของตัวดำเนินการกับตัวดำเนินการ Javascript Ternary
ดูเหมือนว่าฉันจะพันหัวของฉันไปรอบ ๆ ส่วนแรกของรหัสนี้ (+ =) ร่วมกับตัวดำเนินการด้านท้ายไม่ได้ h.className += h.className ? ' error' : 'error' วิธีที่ฉันคิดว่ารหัสนี้ใช้งานได้มีดังต่อไปนี้: h.className = h.className + h.className ? ' error' : 'error' แต่นั่นไม่ถูกต้องเพราะนั่นทำให้เกิดข้อผิดพลาดในคอนโซลของฉัน ดังนั้นคำถามของฉันคือฉันจะเชื่อมต่อรหัสนี้อย่างถูกต้องได้อย่างไร?

2
กำหนดค่าเดียวกันให้กับตัวแปรหลายตัวพร้อมกัน?
ฉันจะกำหนดค่าเดียวกันสำหรับตัวแปรหลายตัวใน PHP พร้อมกันได้อย่างไร ฉันมีสิ่งที่ชอบ: $var_a = 'A'; $var_b = 'A'; $same_var = 'A'; $var_d = 'A'; $some_var ='A'; ในกรณีของฉันฉันไม่สามารถเปลี่ยนชื่อตัวแปรทั้งหมดให้มีชื่อเดียวกันได้ (ซึ่งจะทำให้ง่ายขึ้น) มีวิธีใดบ้างที่จะกำหนดค่าเดียวกันให้กับตัวแปรทั้งหมดด้วยวิธีที่กะทัดรัดกว่านี้

2
เหตุใดจึงไม่กำหนดให้รายการว่าง (เช่น [] =“”) เกิดข้อผิดพลาด
ใน python 3.4 ฉันกำลังพิมพ์ [] = "" และใช้งานได้ดีไม่มีการเพิ่มข้อยกเว้น แม้ว่า[]จะไม่เท่ากับ""หลังจากนั้นก็ตาม [] = () ยังใช้งานได้ดี "" = [] ทำให้เกิดข้อยกเว้นตามที่คาดไว้ () = "" ทำให้เกิดข้อยกเว้นตามที่คาดไว้ เกิดอะไรขึ้น?

13
การกำหนดภายในแลมบ์ดานิพจน์ใน Python
ฉันมีรายการของวัตถุและฉันต้องการลบวัตถุทั้งหมดที่ว่างเปล่ายกเว้นรายการเดียวโดยใช้filterและlambdaนิพจน์ ตัวอย่างเช่นหากอินพุตคือ: [Object(name=""), Object(name="fake_name"), Object(name="")] ... ผลลัพธ์ควรเป็น: [Object(name=""), Object(name="fake_name")] มีวิธีเพิ่มงานให้กับlambdaนิพจน์หรือไม่? ตัวอย่างเช่น: flag = True input = [Object(name=""), Object(name="fake_name"), Object(name="")] output = filter( (lambda o: [flag or bool(o.name), flag = flag and bool(o.name)][0]), input )

10
ทำไมฉัน = i + ฉันให้ 0
ฉันมีโปรแกรมง่ายๆ: public class Mathz { static int i = 1; public static void main(String[] args) { while (true){ i = i + i; System.out.println(i); } } } เมื่อฉันเรียกใช้โปรแกรมนี้สิ่งที่ผมเห็นคือ0สำหรับiในการส่งออกของฉัน ฉันคาดหวังว่ารอบแรกเราจะมีi = 1 + 1ตามด้วยi = 2 + 2ตามด้วยi = 4 + 4ฯลฯ นี่เป็นเพราะทันทีที่เราพยายามประกาศใหม่iทางด้านซ้ายมือค่าของมันจะถูกรีเซ็ตเป็น0? หากใครสามารถชี้ให้ฉันเห็นรายละเอียดปลีกย่อยของสิ่งนี้จะดีมาก เปลี่ยนintไปlongและดูเหมือนว่าจะได้รับการพิมพ์ตัวเลขตามที่คาดไว้ ฉันประหลาดใจที่ความเร็วสูงสุดถึงค่าสูงสุด 32 บิต!

3
ความแตกต่างระหว่าง a - = b และ a = a - b ใน Python
ฉันเพิ่งใช้โซลูชันนี้เพื่อหาค่าเฉลี่ยทุกๆ N แถวของเมทริกซ์ แม้ว่าโซลูชันจะใช้งานได้โดยทั่วไปฉันมีปัญหาเมื่อใช้กับอาร์เรย์ 7x1 ฉันสังเกตเห็นว่าปัญหาคือเมื่อใช้ตัว-=ดำเนินการ เพื่อเป็นตัวอย่างเล็ก ๆ : import numpy as np a = np.array([1,2,3]) b = np.copy(a) a[1:] -= a[:-1] b[1:] = b[1:] - b[:-1] print a print b ซึ่งผลลัพธ์: [1 1 2] [1 1 1] ดังนั้นในกรณีของอาร์เรย์a -= bจะให้ผลลัพธ์ที่แตกต่างจากa = a - b. ฉันคิดจนถึงตอนนี้ว่าสองวิธีนี้เหมือนกันทุกประการ อะไรคือความแตกต่าง? วิธีการที่ฉันพูดถึงสำหรับการรวมทุก N แถวในเมทริกซ์นั้นใช้งานได้อย่างไรสำหรับเมทริกซ์ …

14
กำหนดตัวแปรใหม่หลายตัวบน LHS ในบรรทัดเดียว
ฉันต้องการกำหนดตัวแปรหลายตัวในบรรทัดเดียวใน R เป็นไปได้ไหมที่จะทำสิ่งนี้ values # initialize some vector of values (a, b) = values[c(2,4)] # assign a and b to values at 2 and 4 indices of 'values' โดยปกติฉันต้องการกำหนดตัวแปร 5-6 ตัวในบรรทัดเดียวแทนที่จะมีหลายบรรทัด มีทางเลือกอื่นไหม

6
การสร้างอาร์เรย์จากไฟล์ข้อความใน Bash
สคริปต์ใช้เวลา URL ให้แยกมันสำหรับฟิลด์ที่จำเป็นและเปลี่ยนเส้นทางการส่งออกที่จะถูกบันทึกไว้ในไฟล์file.txt เอาต์พุตจะถูกบันทึกในบรรทัดใหม่ทุกครั้งที่พบฟิลด์ file.txt A Cat A Dog A Mouse etc... ฉันต้องการรับfile.txtและสร้างอาร์เรย์จากมันในสคริปต์ใหม่โดยที่ทุกบรรทัดจะเป็นตัวแปรสตริงของตัวเองในอาร์เรย์ จนถึงตอนนี้ฉันได้ลอง: #!/bin/bash filename=file.txt declare -a myArray myArray=(`cat "$filename"`) for (( i = 0 ; i < 9 ; i++)) do echo "Element [$i]: ${myArray[$i]}" done เมื่อฉันเรียกใช้สคริปต์นี้ช่องว่างจะส่งผลให้คำถูกแยกและแทนที่จะได้รับ เอาต์พุตที่ต้องการ Element [0]: A Cat Element [1]: A Dog etc... ฉันได้รับสิ่งนี้: …

3
Copy constructor และ = operator overload ใน C ++: เป็นฟังก์ชันทั่วไปที่เป็นไปได้หรือไม่?
ตั้งแต่ตัวสร้างสำเนา MyClass(const MyClass&); และตัวดำเนินการ = โอเวอร์โหลด MyClass& operator = (const MyClass&); มีรหัสเดียวกันพารามิเตอร์เดียวกันและแตกต่างกันเพียงแค่ผลตอบแทนเป็นไปได้ไหมที่จะมีฟังก์ชันทั่วไปให้ทั้งคู่ใช้?

5
เหตุใด C และ C ++ จึงสนับสนุนการกำหนดอาร์เรย์แบบสมาชิกภายในโครงสร้าง แต่โดยทั่วไปแล้วไม่ใช่
ฉันเข้าใจว่าไม่รองรับการกำหนดอาร์เรย์แบบสมาชิกดังนั้นสิ่งต่อไปนี้จะใช้ไม่ได้: int num1[3] = {1,2,3}; int num2[3]; num2 = num1; // "error: invalid array assignment" ฉันเพิ่งยอมรับสิ่งนี้ว่าเป็นความจริงโดยคิดว่าจุดมุ่งหมายของภาษาคือการจัดเตรียมเฟรมเวิร์กแบบปลายเปิดและให้ผู้ใช้ตัดสินใจว่าจะใช้บางสิ่งบางอย่างเช่นการคัดลอกอาร์เรย์อย่างไร อย่างไรก็ตามสิ่งต่อไปนี้ใช้งานได้: struct myStruct { int num[3]; }; struct myStruct struct1 = {{1,2,3}}; struct myStruct struct2; struct2 = struct1; อาร์เรย์num[3]เป็นสมาชิกที่กำหนดจากอินสแตนซ์ในstruct1อินสแตนซ์ในstruct2. เหตุใดการมอบหมายอาร์เรย์ที่ชาญฉลาดของสมาชิกจึงได้รับการสนับสนุนสำหรับโครงสร้าง แต่โดยทั่วไปไม่ได้รับการสนับสนุน แก้ไข : ความคิดเห็นของRoger Pateในเธรดstd :: string ใน struct - ปัญหาการคัดลอก / การกำหนด? ดูเหมือนจะชี้ไปในทิศทางทั่วไปของคำตอบ …

12
ฉันจะคัดลอกเนื้อหาของ ArrayList หนึ่งไปยังอีกรายการหนึ่งได้อย่างไร
ฉันมีโครงสร้างข้อมูลบางส่วนและฉันต้องการใช้โครงสร้างแบบชั่วคราวและอีกแบบไม่ใช่แบบชั่วคราว ArrayList<Object> myObject = new ArrayList<Object>(); ArrayList<Object> myTempObject = new ArrayList<Object>(); //fill myTempObject here .... //make myObject contain the same values as myTempObject myObject = myTempObject; //free up memory by clearing myTempObject myTempObject.clear(); ตอนนี้ปัญหาของหลักสูตรนี้myObjectเป็นเพียงแค่ชี้ไปที่จริงๆmyTempObjectและเมื่อmyTempObjectเคลียร์แล้วก็เป็นเช่นนั้นmyObjectเช่นนั้น ฉันจะเก็บค่าจากวิธีการmyTempObjectในmyObjectการใช้ Java?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.