วิศวกรรมซอฟต์แวร์

ถาม - ตอบสำหรับมืออาชีพนักวิชาการและนักเรียนที่ทำงานในวงจรการพัฒนาระบบ

5
ค่า Falsy กับ null, undefined หรือสตริงว่าง
ฉันทำงานกับ jQuery มาหลายปีแล้ว อย่างไรก็ตามเมื่อเร็ว ๆ นี้ฉันพบว่าตัวฉันเองมีความลึกซึ้งยิ่งขึ้นในภาษา JavaScript เมื่อเร็ว ๆ นี้ฉันเคยได้ยินเกี่ยวกับ "ความจริง" และค่าเท็จ อย่างไรก็ตามฉันไม่เข้าใจพวกเขาทั้งหมด ขณะนี้ฉันมีรหัสที่มีลักษณะเช่นนี้: var fields = options.fields || ['id', 'query']; ฉันจำเป็นต้องระบุว่าฟิลด์ใดเป็นโมฆะไม่ได้กำหนดหรือมีความยาว 0 ฉันรู้ว่าต้องทำอย่างไร: if ((fields === null) || (fields === undefined) || (fields.length === 0)) { ... } คำถามของฉันคือต่อไปนี้เหมือนกัน: if (!fields) { ... }
11 javascript 

4
ฉันควรแยกวิเคราะห์ XML บนเซิร์ฟเวอร์หรือระบุพรอกซีและให้เบราว์เซอร์แยกวิเคราะห์หรือไม่
ฉันต้องติดต่อกับ API ของบุคคลที่สาม ด้วย API นี้ฉันทำการร้องขอ GET จากภายในเบราว์เซอร์ของผู้ใช้ปลายทางและรับการตอบกลับ XML ข้อมูลนี้จะถูกใช้ในแอปพลิเคชันที่ใช้เบราว์เซอร์ซึ่งผู้ใช้สามารถค้นหาได้ใช้เพื่อการตัดสินใจ ฯลฯ ปัญหาหลักคือเบราว์เซอร์ส่วนใหญ่ล็อคการใช้ XML ข้ามโดเมนดังนั้นฉันจึงไม่สามารถรับได้ XML จาก API แม้ว่าข้อมูลโดยรวมจะแบ่งออกเป็นสองชุด ชุดข้อมูลแรกเป็นข้อมูลสาธารณะและจำเป็นต้องได้รับการอัปเดตทุก ๆ ครั้งดังนั้นจึงสามารถแคชได้สำหรับผู้ใช้ทุกคนทางฝั่งเซิร์ฟเวอร์ทำให้ปริมาณการใช้งานลดลงอย่างมาก ชุดข้อมูลที่สองเป็นข้อมูลส่วนบุคคลและเป็นส่วนตัวสำหรับผู้ใช้แต่ละคน ข้อมูลนี้ยังได้รับการปรับปรุงใน API บ่อยขึ้น สิ่งนี้นำไปสู่การแคชจะมีประสิทธิภาพน้อยกว่ามาก เพื่อเหตุผลด้านความยืดหยุ่นฉันต้องการให้โหลดเซิร์ฟเวอร์มีขนาดเล็กที่สุดเท่าที่จะทำได้ ฉันเห็นสองตัวเลือกก่อนหน้าฉัน: ระบุพร็อกซีที่สามารถใช้ในการกำหนดเส้นทางคำขอ XML ไปยังเซิร์ฟเวอร์บุคคลที่สามและส่งกลับไปกลับมาระหว่างไคลเอ็นต์และ API บุคคลที่สามโดยตรง ให้เซิร์ฟเวอร์ทำการแปลงจาก XML เป็น JSON และตัดข้อมูลที่ไม่จำเป็นออก นี่หมายถึงการสร้าง API ใหม่สำหรับเซิร์ฟเวอร์ของเราซึ่งแปลเป็นคำขอจาก API ของบุคคลที่สาม อะไรจะเป็นวิธีที่ดีที่สุดในการให้ข้อมูลแก่ผู้ใช้? (ไม่จำเป็นต้องเป็นหนึ่งในสองตัวเลือก)
11 javascript  api  xml  websites  json 

3
หลายคลาสที่มีชื่อเดียวกัน แต่มีเนมสเปซที่แตกต่างกันใช่ไหม
ฉันพบรหัสบางส่วน (C # ถ้าสำคัญ) ที่มีคลาสที่มีชื่อเหมือนกัน แต่แตกต่างกันในเนมสเปซ พวกเขาทั้งหมดมีแนวโน้มที่จะเป็นตัวแทนของสิ่งเดียวกัน แต่มักจะ "มุมมอง" ที่แตกต่างกันของวัตถุเดียวกัน เนมสเปซที่แตกต่างกันนั้นเป็นส่วนหนึ่งของโซลูชันเดียวกันและแม้แต่ dll เดียวกัน ฉันมีความคิดของฉัน แต่ไม่พบสิ่งใดที่ชัดเจนเกี่ยวกับการปฏิบัตินี้เพื่อใช้เป็นเครื่องมือที่ฉลาดหรือมีรูปแบบที่ควรหลีกเลี่ยง คำถามเกี่ยวกับการตั้งชื่อ smurfสัมผัสนี้ แต่จากทิศทางอื่น การแก้ความสงสัยในชื่ออาจต้องการคำนำหน้าโดยพลการและแพร่หลายซึ่งคำถามนั้นต้องการกำจัด แนวทางการปฏิบัตินี้มีอะไรบ้าง?
11 naming 

1
ทำไมตัวสร้างข้อมูลที่มีชื่อเดียวกันไม่อนุญาตในตัวสร้างประเภทอื่น
การประกาศต่อไปนี้ให้ข้อผิดพลาด: type Vec2d = (Float, Float) type Vec3d = (Float, Float, Float) -- Rect x y defines a rectangle spanning from (0,0) to (x,y) data Obj2d = Rect Float Float | Translate Vec2d Obj2d -- Cuboid x y z defines a cuboid spanning from (0,0,0) to (x,y,z) data Obj3d = …
11 haskell 

3
ค่า“ (int) & ค่า 0x1, (int) & ค่า 0x2, (int) ค่า & 0x4, (int) ค่า & 0x8” หมายถึงอะไร "
"value" มีค่าตั้งแต่ 0 ถึง 15 (ค่าที่เป็นไปได้) เมื่อใดที่จะเป็นไปตามเงื่อนไข 4 "ถ้า" ถ้าค่า (int) ของฉัน = 2 นี่หมายความว่า 0010 หรือไม่ if ((int)value & 0x1) { //statement here } if ((int)value & 0x2) { //statement here } if ((int)value & 0x4) { //statement here } if ((int)value & 0x8) { //statement here }

2
มีเหตุผลใดที่จะไม่ใช้ตัวเลือกเป็นอาร์กิวเมนต์วิธีในกรณีที่คุณรู้ว่าอาร์กิวเมนต์เป็นสิ่งที่อาจหรือไม่จำเป็น?
ด้วย Java 8 ฉันได้เห็นบทความมากขึ้นเกี่ยวกับการใช้ตัวเลือก / ตัวเลือก ฉันเข้าใจสิ่งที่พวกเขาพยายามเป็นตัวแทนและฉันเห็นตัวอย่างมากมายของพวกเขาที่ใช้เป็นผลตอบแทน อย่างไรก็ตามสิ่งที่ฉันไม่เห็นก็คือพวกมันถูกใช้เป็นข้อโต้แย้งเมธอด / ฟังก์ชั่นในภาษาที่ไม่มีไวยากรณ์สำหรับพารามิเตอร์เริ่มต้น / ทางเลือก มีเหตุผลใดที่จะไม่ใช้Optionalเป็นอาร์กิวเมนต์วิธีในกรณีที่คุณรู้ว่าอาร์กิวเมนต์เป็นสิ่งที่อาจหรืออาจไม่จำเป็น? นี่คือตัวอย่างที่ฉันคิดได้: Optional<Customer> lookupCustomer(String firstName, Optional<String> middleName, String lastName)

3
เราควรใช้การยกใน Javascript เมื่อไรและที่ไหน
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันใหม่กับ Javascript ฉันเรียนรู้แนวคิดของการชักรอกใน Javascript จากบทเรียนของ Javacsript ในเว็บไซต์Mozillaผมเจอคำhoistingนี้ ตามบทเรียนเหล่านั้นตัวแปรใน JavaScript คือการที่คุณสามารถอ้างถึงตัวแปรที่ประกาศในภายหลังโดยไม่ได้รับการยกเว้น แต่คำถามของฉันเกี่ยวกับสถานการณ์ที่เหมาะสมที่จะใช้การยกใน Javascript ฝั่งไคลเอ็นต์หรือทำไมเราควรใช้การยกใน Javascript ข้อดีของมันคืออะไร
11 javascript 

1
จุดเชื่อมโยง rel =“ ตัวเอง” ใน REST API คืออะไร?
ฉันมักจะเห็นสิ่งต่อไปนี้ในเอกสาร HTML <link rel="self" href="http://example.com/something"> หรือเช่นนี้ใน JSON link: { rel="self", href="http://example.com/something" } หรือใน XML <atom:link rel="self" href="http://example.com/something" /> ดังนั้นฉันมีคำถาม: ทำไมรวมลิงค์นี้ มีข้อดีอะไรบ้าง? (โปรดบอกฉันว่ามันมีเหตุผลและมันไม่ใช่แค่ "การปฏิบัติที่ดี" เครื่องราง) ฉันจะใช้ประโยชน์จากลิงก์นี้ในลูกค้าของฉันได้อย่างไร กรณีการใช้งานของลิงค์นี้มีอะไรบ้าง? เมื่อใดที่ฉันไม่ควรใช้ลิงก์นี้ เมื่อไรจึงจะไม่มีประโยชน์ที่จะรวมไว้
11 rest  web-api 

8
เราควร debug เว็บแอปพลิเคชั่น PHP อย่างปลอดภัยโดยไม่เปิดเผยความลับต่อคู่แข่งอย่างไร
ต้องการปรับปรุงโพสต์นี้หรือไม่? ให้คำตอบโดยละเอียดสำหรับคำถามนี้รวมถึงการอ้างอิงและคำอธิบายว่าทำไมคำตอบของคุณถึงถูกต้อง คำตอบที่ไม่มีรายละเอียดเพียงพออาจแก้ไขหรือลบออกได้ เมื่อเร็ว ๆ นี้ฉันทำโปรแกรม ฉันลืมลบรหัส 2 บรรทัด ความผิดพลาดนั้นมีค่าฉัน $ 800 ต่อวันทุกวัน ฉันเขียนโปรแกรมด้วย PHP หากผู้เข้าชมใช้พรอกซีมันจะเปลี่ยนเส้นทางที่อื่น การใช้ดีบักเกอร์เป็นไปไม่ได้เพราะบางรหัสมี ioncube เนื่องจากโปรแกรมนั้นเปลี่ยนเส้นทางไปที่อื่นไม่ว่าจะเกิดอะไรขึ้นก็ยากที่จะดูว่าส่วนใดของรหัสที่ถูกประมวลผล ดังนั้นฉันจึงใส่ข้อมูลการแก้ไขข้อบกพร่องทุกที่ ฉันคิดว่าฉันจะลบพวกเขาในภายหลัง วิธีที่เป็นธรรมชาติที่สุดในการดีบักคือการใส่ข้อมูลการดีบักลงในไฟล์ ปัญหาคือฉันมักจะใช้ proxy ดังนั้นหลังจากที่ฉันเปลี่ยนโปรแกรมฉันมักจะต้องดาวน์โหลดไฟล์ข้อความด้วย filezilla บ่อยครั้งที่ไฟล์ข้อความไม่แสดงสิ่งที่ฉันคิดว่าควรแสดง ในที่สุดฉันก็ตัดสินใจที่จะแสดงข้อผิดพลาดบนเว็บ ฉันคิดว่ามีโหมดการแก้ไขข้อบกพร่อง อย่างไรก็ตามฉันกลัวว่าฉันจะลืมลบข้อมูลการดีบัก ฉันถือว่ามีโหมดการดีบักหากผู้ใช้ทำเช่น? debuggingmode = 1 เช่น อย่างไรก็ตามฉันรู้สึกหวาดระแวงว่าคู่แข่งของฉันสามารถเดาคำหลักลับได้ ฉันลบข้อมูลการแก้ไขข้อบกพร่องส่วนใหญ่ ฉันลืมที่จะลบมันและอันนั้นจะปรากฏขึ้นก็ต่อเมื่อผู้ใช้ใช้พรอกซีจากประเทศที่ถูกต้อง ปรากฎว่าฉันไม่มีพร็อกซีจากประเทศที่ถูกต้องและไม่ทราบว่า หลังจากโปรแกรมใช้งานได้ 24 ชั่วโมงฉันอัพโหลดไฟล์นั้นไปยังโดเมนหลักของฉัน คู่แข่งของฉันใช้พรอกซีดูรหัสการดีบัก เขาคัดลอกความคิดและนั่นคือวิธีที่ฉันสูญเสีย $ 800 ต่อวัน เมื่อมองย้อนกลับไปฉันมีช่วงเวลาที่ยากลำบากในการดูว่าฉันไปไหนผิด ฉันระมัดระวังเป็นพิเศษ แต่มันก็เกิดขึ้น …
11 php  debugging 

3
ผลข้างเคียงทำลายความโปร่งใสในการอ้างอิง
ฟังก์ชั่นการเขียนโปรแกรมใน Scalaอธิบายผลกระทบของผลกระทบต่อการทำลายความโปร่งใสในการอ้างอิง: ผลข้างเคียงซึ่งแสดงถึงการละเมิดความโปร่งใสในการอ้างอิงบางส่วน ฉันอ่านส่วนหนึ่งของSICPซึ่งกล่าวถึงการใช้ "รูปแบบการแทนที่" เพื่อประเมินโปรแกรม เมื่อฉันเข้าใจแบบจำลองการแทนที่ด้วย referential transparent (RT) คร่าวๆคุณสามารถยกเลิกการเขียนฟังก์ชันลงในส่วนที่ง่ายที่สุดได้ หากการแสดงออกเป็น RT แล้วคุณสามารถยกเลิกการเขียนการแสดงออกและมักจะได้รับผลเดียวกัน อย่างไรก็ตามตามที่ระบุไว้ข้างต้นการใช้ผลข้างเคียงสามารถ / จะทำลายรูปแบบการทดแทน ตัวอย่าง: val x = foo(50) + bar(10) ถ้าfooและbar ไม่ได้มีผลข้างเคียงแล้วดำเนินการอย่างใดอย่างหนึ่งฟังก์ชั่นจะเสมอxกลับผลเดียวกัน แต่หากพวกเขามีผลข้างเคียงพวกเขาจะเปลี่ยนตัวแปรที่ขัดขวาง / โยนประแจเข้ากับโมเดลการแทนที่ ฉันรู้สึกสบายใจกับคำอธิบายนี้ แต่ฉันก็ไม่รู้สึกแย่ โปรดแก้ไขฉันและกรอกข้อมูลในหลุมใด ๆ ที่เกี่ยวกับผลข้างเคียงที่ทำให้ RT แตกหักพูดคุยถึงผลกระทบต่อรูปแบบการทดแทนเช่นกัน

2
. NET MVC สถาปัตยกรรมโครงการ / ชั้น
เมื่อวางแผนสถาปัตยกรรมสำหรับเว็บแอ็พพลิเคชัน MVC ขนาดกลางขนาดใหญ่คุณจะใช้เลเยอร์ให้เป็นแบบแยกย่อยได้มากที่สุดและง่ายต่อการทดสอบอย่างไร (โดยทั่วไปปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุด) สมมติว่าฉันใช้รหัสก่อนเพื่อเข้าถึงข้อมูลของฉัน ฉันต่อสู้กับสิ่งที่จะกำหนด "ตรรกะทางธุรกิจ" เป็นและวิธีที่มันหมายถึงการโต้ตอบกับชั้นข้อมูล ยกตัวอย่างเช่นแอปพลิเคชันการขายยานพาหนะตรรกะทางธุรกิจจะเป็นคลาสที่ทำงานเช่นการคำนวณวงภาษีสำหรับยานพาหนะที่กำหนดเปรียบเทียบสถิติไมล์ต่อแกลลอน ฯลฯ หรือไม่ สำหรับองค์กรธุรกิจ (เช่นรถยนต์รถตู้รถจักรยานยนต์) ฉันจะใส่สิ่งเหล่านี้ในชั้นข้อมูลพร้อมกับDataContextชั้นเรียนของฉัน นอกจากนี้สิ่งที่จะเป็นตรรกะของแอปพลิเคชันซึ่งตรงข้ามกับธุรกิจ - ฉันคาดเดาสิ่งต่าง ๆ เช่นการตรวจสอบการป้อนข้อมูลเซสชัน / ผู้ใช้? ตัวอย่างเช่นตัวควบคุมรถอาจส่งคืนผลลัพธ์การกระทำ / มุมมองที่แสดงรายการรถยนต์สิบอันดับแรกที่กรองตามประเภทและ mpg ที่ดีที่สุด ดังนั้นสมมติว่าฉันมีICarRepository'carRepo' ฉีดเข้าไปในคอนโทรลเลอร์ของฉัน (โดยใช้รูปแบบพื้นที่เก็บข้อมูล / DI) ฉันกรองรถยนต์ของฉันจากพารามิเตอร์วิธีการกระทำเช่นvar cars = carRepo.getCarsByType("hatchback"); ดังนั้นฉันจึงเก็บความรู้การเข้าถึงข้อมูลออกจากตัวควบคุมของฉันโดยใช้ที่เก็บตอนนี้เพื่อให้ตรรกะทางธุรกิจออกจากตัวควบคุมโดยใช้รูปแบบโดเมน - var result = new MpgCalculator (cars); - สมมติว่าฉันต้องการคลาสเครื่องคิดเลขเพราะมันต้องใช้ตรรกะเพิ่มเติมเพื่อคำนวณประสิทธิภาพการใช้เชื้อเพลิงที่ดีที่สุดมากกว่าแค่การโหลด / กรองเอนทิตีจาก DB ดังนั้นตอนนี้ฉันมีชุดข้อมูลสำหรับมุมมองของฉันในการเรนเดอร์ที่ใช้ที่เก็บเพื่อดึงข้อมูลจากเลเยอร์การเข้าถึงข้อมูลและวัตถุเฉพาะโดเมนเพื่อประมวลผลและดำเนินงานที่เกี่ยวข้องกับธุรกิจในข้อมูลนั้น ฉันทำผิดพลาดที่นี่ …

3
คุณควรตัดการป้อนข้อมูลเมื่อใด
ฉันฝึกงานกับการเรียนรู้มากมายเกี่ยวกับอุตสาหกรรมด้านนอกสถาบันการศึกษา สิ่งหนึ่งที่ฉันคิดเกี่ยวกับวันนี้คือการป้อนข้อมูลการตัดแต่ง ในด้านหนึ่งของเหรียญฉันไม่ต้องการให้ผู้ใช้ / ผู้ใช้งานได้รับผลลัพธ์ที่ไม่คาดคิดเนื่องจากอินพุตของพวกเขามีช่องว่างมากเกินไปดังนั้นฉันจึงจำเป็นต้องตัดการป้อนข้อมูลของผู้ใช้อย่างต่อเนื่องหลังจากการเรียกใช้ทุกครั้ง แต่ในเวลาเดียวกันถ้าฉันกำลังสร้างห้องสมุดAPIสำหรับใช้ภายในที่นี่ที่สำนักงานท้าย / ช่องว่างชั้นนำอาจมีความสำคัญต่อผลลัพธ์ จากนั้นมีหลายกรณีที่ฉันไม่แน่ใจว่าช่องว่างจะมีความสำคัญหรือไม่ ปัญหาใหญ่สำหรับฉันคือฉันพบว่าตัวเองโทรหา. trim () อย่างต่อเนื่องทุกที่ในรหัสของฉัน ไม่มีใครมีเคล็ดลับ / กฎของหัวแม่มือหรือเพียงแค่คิดเกี่ยวกับวิธีการจัดการกับสถานการณ์บางอย่าง?

3
การส่งโทเค็นการเข้าถึงผ่านทางส่วนหัว HTTP มีความปลอดภัยหรือไม่
นี่เป็นบริการเว็บสงบเป็นครั้งแรกและฉันกังวลเกี่ยวกับปัญหาด้านความปลอดภัย การส่งโทเค็นการเข้าถึงของฉันผ่านส่วนหัว HTTP ปลอดภัยหรือไม่ ตัวอย่างเช่น: POST /v1/i/resource HTTP/1.1 Content-Type: application/x-www-form-urlencoded Api-key: 5cac3297f0d9f46e1gh3k83881ba0980215cd71e Access_token: 080ab6bd49b138594ac9647dc929122adfb983c8 parameter1=foo&parameter2=bar SSLการเชื่อมต่อทำมากกว่า นอกจากนี้สิ่งที่จะต้องมีการกำหนดเป็นscopeคุณลักษณะสำหรับทุกคนaccess token

3
การจัดเก็บรายการเมนูด้วยการอนุญาตของผู้ใช้
ฉันกำลังสร้างระบบเมนูใน PHP และ MySQL ฉันจะมีหลายเมนูที่แตกต่างกันและแต่ละเมนูจะมีชุดของรายการเมนูที่เชื่อมต่ออยู่ บนไซต์ฉันมีสิทธิ์ผู้ใช้ต่างกันผู้ใช้บางคนสามารถดูรายการเมนูทั้งหมดและบางรายการถูกซ่อนจากผู้ใช้บางคน ฉันอยากรู้ว่าฉันจะจัดการสิทธิ์ได้อย่างไรในวิธีที่สะอาดซึ่งจะช่วยให้ผู้ใช้ประเภทอื่น ๆ ในอนาคตสามารถเพิ่มได้อย่างง่ายดาย สิ่งที่ฉันมีจนถึงตอนนี้คืออะไร: ------------------- |Menus ------------------- |id| |display name| ------------------- ---------------------------------------------------------- |Menu items ---------------------------------------------------------- |id| |menu_id| |label| |link| |parent| |sort| |permission| ---------------------------------------------------------- ฉันคิดว่าpermissionคอลัมน์อาจเป็นสตริงที่คั่นด้วยเครื่องหมายจุลภาคที่ฉันสามารถจับคู่กับรหัสการอนุญาตของผู้ใช้ปัจจุบัน มันอาจเป็นการอ้างอิงไปยังตารางอื่นที่กำหนดชุดค่าผสมที่เป็นไปได้ทั้งหมดของสิทธิ์ที่มีอยู่ในปัจจุบัน วิธีแก้ปัญหาหนึ่งก็คือการจัดเก็บรายการเมนูหลายรายการโดยที่ความแตกต่างเพียงอย่างเดียวคือการอนุญาตแม้ว่าสิ่งนี้จะนำไปสู่การจัดเก็บซ้ำซ้อนและอาจเป็นปัญหาในการจัดการ ฉันชอบที่จะได้ยินความคิดบางอย่างเกี่ยวกับวิธีการจัดโครงสร้างนี้และสิ่งที่อาจถือว่าสะอาดแบบไดนามิกและเส็งเคร็ง ขอบคุณ

1
ต้นกำเนิดของชื่อฟังก์ชันการประมวลผลรายการทั่วไป
ฟังก์ชันลำดับสูงกว่าสำหรับการใช้งานในรายการหรืออาร์เรย์ได้ถูกนำมาใช้ซ้ำแล้วซ้ำอีก ฟังก์ชั่นแผนที่ , พับ [ L | r ] และตัวกรองถูกพบร่วมกันในภาษาการเขียนโปรแกรมหลายภาษาเช่น Scheme, ML และ Python ที่ดูเหมือนจะไม่มีบรรพบุรุษเดียวกัน ฉันจะใช้ชื่อทั้งสามนี้เพื่อรักษาคำถาม เพื่อแสดงว่าชื่อไม่เป็นสากลต่อไปนี้เป็นตัวอย่างของชื่อฟังก์ชันการทำงานที่เทียบเท่าในภาษาอื่น C ++ มีการแปลงแทนmapและremove_ifแทนที่จะเป็นfilter (กลับความหมายของเพรดิเคต) ชัดมีmapcarแทนแผนที่ , ลบถ้าไม่แทนการกรองและลดแทนการพับ (บางทันสมัยเสียงกระเพื่อมสายพันธุ์มีแผนที่แต่ปรากฏนี้จะเป็นรูปแบบที่ได้มา .) C # ใช้เลือกแทนการแผนที่และไหนแทนกรอง ชื่อของ C # มาจาก SQL ผ่านLINQและแม้ว่าจะมีการเปลี่ยนแปลงชื่อการทำงานของพวกเขานั้นได้รับอิทธิพลจาก Haskell ซึ่งตัวมันเองได้รับอิทธิพลมาจาก ML ชื่อแผนที่ , พับและตัวกรองเป็นที่แพร่หลาย แต่ไม่เป็นสากล นี่แสดงให้เห็นว่าพวกเขายืมมาจากแหล่งที่มีอิทธิพลไปสู่ภาษาร่วมสมัยอื่น ๆ ชื่อฟังก์ชันเหล่านี้มาจากไหน

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