¡¡¥¿¥×¥ë(tuple)·¿¤Ï C# ¤Î»ý¤Äµ¡Ç½¤Î£±¤Ä¤Ç¤¹¡£
Ê£¿ô¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Î¥Ç¡¼¥¿¤ò¤Ò¤È¤Þ¤È¤á¤Ë¤·¤Æ´ÉÍý¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¤Þ¤¿¡¢Ìá¤êÃͤȤ·¤ÆÍøÍѤ¹¤ë¾ì¹ç¤Ë¤Ï¡¢
Ê£¿ô¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Î¥Ç¡¼¥¿¤òƱ¤¸¤è¤¦¤Ë¤Þ¤È¤á¤ÆÌᤷ¤Æ¤¯¤ì¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£
¡¡½ñ¼°¤ÏÊ£¿ô¤¢¤ê¤Þ¤¹¤Î¤Ç¡¢¤½¤ì¤¾¤ì¾Ò²ð¤·¤Þ¤¹¡£º£²ó¤Ï¢¤Î½ñ¼°¤Ç¼ÂÁõ¤·¤Æ¤¤¤Þ¤¹¡£
¡¡
¡ãµ½ÒÎã¡¡ä
(int, bool) damage = (0, false);
¡¡¾åµ¤ÎÎã¤Î¾ì¹ç¡¢damage ÊÑ¿ô¤Ë¤Ï¡¢£²¤Ä¤Î·¿¤Î¾ðÊ󤬴ޤޤì¤Æ¤¤¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£
¤è¤êÃúÇ«¤Ë½ñ¤¯¾ì¹ç¤Ë¤Ï¡¢º£²ó¤Î¤è¤¦¤Ë¡¢Ä̾ï¤ÎÊÑ¿ô¤Î¤è¤¦¤Ë·¿¤ËÂФ·¤ÆÀë¸À¤â²Äǽ¤Ç¤¹¡£
½ÐÍè¤ë¤À¤±
¥¿¥×¥ëÆâ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Î·¿¤Ë¤âÊÑ¿ô¤ÎÀë¸À¤ò¤Ä¤±¤ÆÍøÍѤ¹¤ë¤³¤È¤ò¤ª¤¹¤¹¤á¤·¤Þ¤¹¡£
¡ãµ½ÒÎ㢡ä
(int value, bool isWeakness) = (0, false);
¡ãµ½ÒÎ㣡ä
(int value, bool isWeakness) damage = (0, false);
¡¡¥¿¥×¥ë·¿¤Î¾ðÊó¤ò°·¤¦¾ì¹ç¡¢¥¿¥×¥ëÆâ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¤Æ
ÊÑ¿ô¤ÎÀë¸À¤ò¹Ô¤Ã¤Æ¤¤¤ë¤«¡¢¤¤¤Ê¤¤¤«¤Ë¤è¤Ã¤Æ¡¢»²¾È¤¹¤ë¾ì¹ç¤Îµ½Ò¤¬ÊѤï¤ê¤Þ¤¹¡£
¡¡µ½ÒÎ㡤Τ褦¤Ë¡¢¥¿¥×¥ëÆâ¤Ç·¿¤Î¤ß¤·¤«Àë¸À¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢¥¿¥×¥ëÆâ¤Î¾ðÊó¤Ï
Item1¡¢Item2 ¤È¤¤¤¦¤è¤¦¤Ë¼«Æ°Åª¤ËºÎÈÖ¤µ¤ì¤Þ¤¹¡£
¤½¤Î¾ì¹ç¤Ï¡¢¡Ö
¥¿¥×¥ë¤ÎÊÑ¿ô̾.¥¿¥×¥ëÆâ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ÎÀë¸À½ç¤ÎItem¤ÎÈÖ¹æ¡×¤Î½ñ¼°¤Çµ½Ò¤Ç¤¤Þ¤¹¡£
¡ãµ½ÒÎ㡤ξì¹ç¤Î»²¾ÈÎã¡ä
UpdateDurability(damage.Item1); // int ·¿¤Î°ú¿ô¤ò»²¾È¤·¤ÆÅϤ·¤Æ¤¤¤Þ¤¹
¡¡ÊÑ¿ô¤ÎÀë¸À¤ò¹Ô¤Ã¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢Ä̾ï¤ÎÊÑ¿ô¤Î¤è¤¦¤Ë¡Ö
¥¿¥×¥ë¤ÎÊÑ¿ô̾.¥¿¥×¥ëÆâ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ÎÊÑ¿ô̾¡×¤Î½ñ¼°¤Çµ½Ò¤Ç¤¤Þ¤¹¡£
¤½¤Î¤¿¤á¡¢¥¿¥×¥ë¤ÎÊÑ¿ô̾¤«¤é¡¢Ãͤο䬤¬²Äǽ¤Ç¤¹¡£
¡ãµ½ÒÎ㢤ξì¹ç¤Î»²¾ÈÎã¡ä
UpdateDurability(damage.value); // int ·¿¤Î°ú¿ô¤ò»²¾È¤·¤ÆÅϤ·¤Æ¤¤¤Þ¤¹
¡¡Item1¡¢Item2 ¤Ç¤â½èÍý¤ÏÆ°¤¤Þ¤¹¤¬¡¢¥×¥í¥°¥é¥à¤Ï½èÍý¤ò¸«¤Æ¡¢
ï¤Ç¤â¤¹¤°¤ËÆâÍƤ¬Íý²ò¤Ç¤¤ëÀ߷פ¬ÍýÁۤǤ¹¡£
¤Ê¤ë¤Ù¤¯ÊÑ¿ô̾¤ò¤Ä¤±¤Æ¥¿¥×¥ë¤ÎÀë¸À¤ò¤·¤¿Êý¤¬¤¤¤¤¤È¤¤¤¦¤Î¤Ï¡¢¤³¤Î¤è¤¦¤Ë
¥×¥í¥°¥é¥à¤Î²ÄÆÉÀ¤Ë´Ø¤ï¤ë¤¿¤á¤Ç¤¹¡£
damage.Item1 ¤è¤ê¤â¡¢damage.value ¤ÎÊý¤¬¡¢ÊÑ¿ô̾¤À¤±¸«¤Æ¤â
¤É¤Î¤è¤¦¤ÊÃͤ¬ÂåÆþ¤µ¤ì¤Æ¤¤¤ë¤«È½ÃǤ¬¤Ä¤¤ä¤¹¤¤¤Î¤Ç¡¢½èÍý¤òÆɤ߲ò¤¤ä¤¹¤¤¤È¤¤¤¦¤³¤È¤Ç¤¹¡£
¡¡º£²ó¤Î½èÍý¤Ç¤Ï¡¢¥¿¥×¥ë·¿¤òÌá¤êÃͤò»ý¤Ä¥á¥½¥Ã¥É¤È¤·¤Æ¤â³èÍѤ·¤Æ¤¤¤Þ¤¹¡£
¡ã±¦ÊÕ¤ÇÌá¤êÃͤò»ý¤Ä¥á¥½¥Ã¥É¤Î¼Â¹ÔÌ¿Îá¡ä
¡¡// ¤ª»È¤¤¤Î¾õÂ֤ȻĤê»þ´Ö¤ò¼èÆÀ
(bool isJobEnd, int remainingTime) = JudgeJobsEnd(jobTime);
¡ã¸Æ¤Ó½Ð¤µ¤ì¤Æ¼Â¹Ô¤µ¤ì¤ë¥á¥½¥Ã¥É¤ÈÌá¤êÃͤγÎǧ¡ä
¡¡¡¡/// <summary>
/// »þ´Ö¤Îº¹Ê¬¤è¤ê¡¢¤ª»È¤¤¤¬½ªÎ»¤·¤Æ¤¤¤ë¤«È½Äê
/// </summary>
/// <param name="jobTimeData"></param>
/// <returns></returns>
private (bool, int) JudgeJobsEnd(OfflineTimeManager.JobTimeData jobTimeData) {
¡¡¡¡¡¡¡¡¡¡¡¡//¡¡½èÍý
¡¡¡¡¡¡¡¡// ·Ð²á»þ´Ö¤¬¤ª»È¤¤¤Ë¤«¤«¤ë»þ´Ö¤è¤ê¤âƱ¤¸¤«Â¿¤¤¤Ê¤é
if (remainingTime <= elaspedTime) {
// ¤ª»È¤¤´°Î»
return (true, 0); // <= ¥¿¥×¥ë·¿¤ÎÌá¤êÃÍ
}
// ¤ª»È¤¤Ì¤Î»¡£»Ä¤ê»þ´Ö¤«¤é·Ð²á»þ´Ö¤ò¸º»»¤·¤Æ»Ä¤ê»þ´Ö¤Ë¤¹¤ë
return (false, remainingTime - elaspedTime);¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡// <= ¥¿¥×¥ë·¿¤ÎÌá¤êÃÍ
}
¡¡
¡¡JudgeJobsEnd ¥á¥½¥Ã¥É¤ÎÌá¤êÃͤη¿¤Ï (bool, int) ¤Î¥¿¥×¥ë·¿¤Ç¤¹¡£
¤è¤Ã¤Æ¤³¤Î½èÍý¤Ï
¥¿¥×¥ë·¿ = ¥¿¥×¥ë·¿¤Ë¤Ê¤ê¤Þ¤¹¤Î¤Ç¡¢ÂåÆþ½èÍý¤¬À®Î©¤·¤Æ¤¤¤Þ¤¹¡£
¥¿¥×¥ë·¿Æ±»Î¤Ç¤¢¤Ã¤Æ¤â¡¢
¥¿¥×¥ëÆâ¤Î·¿¤¬°Û¤Ê¤ë¾ì¹ç¤Ë¤ÏÂåÆþ½èÍý¤Ç¤¤Þ¤»¤ó¤Î¤ÇÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£
º£²ó¤Ï¡¢
(bool, int) = (bool, int) ¤Ç¤¢¤ë¤¿¤á½èÍý¤¬À®Î©¤·¤Æ¤¤¤Þ¤¹¡£
¡¡¤³¤Î½èÍý¤¬¼Â¹Ô¤µ¤ì¤ë¤È¡¢JudgeJobsEnd ¥á¥½¥Ã¥ÉÆâ¤Ë¤ª¤¤¤Æ½èÍý¤¬¹Ô¤ï¤ì¤Æ¡¢
¤½¤Î½èÍý·ë²Ì¤È¤·¤Æ¡¢
bool ·¿¤Ç¤ª»È¤¤¤¬´°Î»¤·¤Æ¤¤¤ë/¤·¤Æ¤¤¤Ê¤¤(true / false)¤È¡¢
int ·¿¤Ç»Ä¤Ã¤Æ¤¤¤ë¤ª»È¤¤¤Î»þ´Ö¡¢¤È¤¤¤¦
£²¤Ä¤Î¾ðÊó¤¬ damage ÊÑ¿ô¤ËÂåÆþ¤µ¤ì¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£
»²¹Í¥µ¥¤¥È
MicroSoft C#¥ê¥Õ¥¡¥ì¥ó¥¹
¥¿¥×¥ë·¿
https://docs.microsoft.com/ja-jp/dotnet/csharp/lan...