Có thể bao gồm một chức năng bên trong một chức năng khác không? Để tìm hiểu các chức năng, tôi đang cố gắng tạo một chuỗi chiến đấu bằng PHP. Trình tự sẽ trông như thế này:
- Dice sẽ lăn, gán số cho các biến;
- Kết quả tấn công Hero1 được in;
- Dice sẽ lăn, gán số cho các biến;
- Kết quả tấn công Hero1 được in;
- Dice sẽ lăn, gán số cho các biến;
- Kết quả tấn công Hero1 được in;
Kết quả tấn công ở đây được in;
<? rollSim(); combatSim(); function rollSim() { $hAttack = rand(1,20); $mDefend = rand(1,20); $mAttack = rand(1,20); $hDefend = rand(1,20); $mDamage = rand(10,25); $hDamage = rand(1,20); } // end rollSim function combatSim() { rollSim(); if ($hAttack>$mDefend) { print "Hero hit monster for $hDamage damage.<br>"; } else if ($hAttack<=$mDefend) { print "Hero missed monster."; } } // end combatSim ?>Kết quả tấn công Hero3 được in.Apr 2, 2009 at 4:49
Việc lăn xúc xắc sẽ là một chức năng tự động. Đây là mã:return the rolled numbers rather than setting some variables and trying to use them in your other function. I would return them in an associative array, like this:
function rollSim() { $roll['hAttack'] = rand(1,20); $roll['mDefend'] = rand(1,20); $roll['mAttack'] = rand(1,20); $roll['hDefend'] = rand(1,20); $roll['mDamage'] = rand(10,25); $roll['hDamage'] = rand(1,20); return $roll; } function combatSim() { $roll = rollSim(); if ($roll['hAttack'] > $roll['mDefend']) { print "Hero hit monster for {$roll['hDamage']} damage.<br>"; } else if ($roll['hAttack'] <= $roll['mDefend']) { print "Hero missed monster."; } }Hỏi ngày 2 tháng 4 năm 2009 lúc 4:49Apr 2, 2009 at 4:56
Hàm rollSim() của bạn sẽ trả về các số cuộn thay vì đặt một số biến và cố gắng sử dụng chúng trong chức năng khác của bạn. Tôi sẽ trả lại chúng trong một mảng kết hợp, như thế này:Paige Ruten
Đã trả lời ngày 2 tháng 4 năm 2009 lúc 4:5636 gold badges175 silver badges196 bronze badges
5
Paige Rutenpaige Ruten
168K36 Huy hiệu vàng175 Huy hiệu bạc196 Huy hiệu Đồng
class myCombat { private $hAttack; private $mDefend; private $mAttack; private $hDefend; private $mDamage; private $hDamage; function rollSim() { $this->hAttack = rand(1, 20); $this->mDefend = rand(1, 20); $this->mAttack = rand(1, 20); $this->hDefend = rand(1, 20); $this->mDamage = rand(10, 25); $this->hDamage = rand(1, 20); } function combatSim() { $this->rollSim(); if($this->hAttack > $this->mDefend) echo 'Hero hit monster for ' . $this->hDamage . ' damage.<br />'; else echo 'Hero missed monster'; } } $combat = new myCombat; $combat->combatSim();Không, bạn thực sự không thể làm những gì bạn yêu cầu. Ngay cả khi bạn nhúng tuyên bố rollSim() bên trong định nghĩa của combatSim() (mà bạn có thể làm, đó là hợp pháp nhưng không có tác dụng thực sự), các biến bạn đặt trong rollSim() vẫn sẽ là cục bộ và không thể truy cập được bởi combatSim().Apr 2, 2009 at 5:04
Bạn cần một cách tốt hơn để truyền qua thông tin bạn quan tâm. Jeremy Ruten nêu chi tiết một cách tốt. Một cách khác là xác định một đối tượng chịu trách nhiệm mô hình hóa sự kiện chiến đấu của bạn và có cả hai phương thức rollSim() và combatSim() trên đó.chaos
Đã trả lời ngày 2 tháng 4 năm 2009 lúc 5:0433 gold badges300 silver badges308 bronze badges
1
Chaoschaos
120K33 Huy hiệu vàng300 Huy hiệu bạc 308 Huy hiệu đồng
Bạn có thể gọi các chức năng từ nhau, chắc chắn ... nhưng tôi nghĩ bạn muốn sử dụng phạm vi của cái này ở một trong cái khác, đúng không?Apr 2, 2009 at 4:54
Phạm vi chia sẻ là một doanh nghiệp lộn xộn. Bạn nên vượt qua các đối số.Kalium
Đã trả lời ngày 2 tháng 4 năm 2009 lúc 4:542 gold badges17 silver badges17 bronze badges
Kaliumkalium
function a() { function b() { echo 'I am b'; } function c() { echo 'I am c'; } } a(); b(); c();4.5942 Huy hiệu vàng17 Huy hiệu bạc17 Huy hiệu đồng
Nếu bạn muốn xác định các chức năng trong hàm trong PHP, bạn có thể làm điều đó như thế này:Jan 24, 2011 at 22:00
Bạn phải gọi hàm cha trước, sau đó các chức năng bên trong.zokibtmkd
Đã trả lời ngày 24 tháng 1 năm 2011 lúc 22:001 gold badge22 silver badges24 bronze badges
ZOKIBTMKDZOKIBTMKD
class Percobaan{ public function coba(){ return "return value"; } public function call(){ //call coba function return $this->coba(); } } // end of class percobaan //call the method $klass = new Percobaan(); echo $klass->call();2.1631 Huy hiệu vàng22 Huy hiệu bạc24 Huy hiệu đồng
"return value"Đây là chức năng cuộc gọi ví dụ đơn giản trong hàmOct 17, 2015 at 15:13
Đầu ra sẽ:Mang Jojot
Đã trả lời ngày 17 tháng 10 năm 2015 lúc 15:133 silver badges11 bronze badges
0