{"id":797,"date":"2019-11-27T15:43:41","date_gmt":"2019-11-27T06:43:41","guid":{"rendered":"http:\/\/blogs.mathworks.com\/japan-community\/?p=797"},"modified":"2020-10-05T16:16:35","modified_gmt":"2020-10-05T07:16:35","slug":"function-arguments-part2","status":"publish","type":"post","link":"https:\/\/blogs.mathworks.com\/japan-community\/2019\/11\/27\/function-arguments-part2\/","title":{"rendered":"\u5165\u529b\u5f15\u6570\u306e\u691c\u8a3c\uff5e\u96a0\u3055\u308c\u305f\u4fbf\u5229\u6a5f\u80fd"},"content":{"rendered":"<div class=\"content\">\n<p>&#12371;&#12435;&#12395;&#12385;&#12399;&#12289;&#36947;&#23478;&#12391;&#12377;&#12290;<\/p>\n<p><a href=\"https:\/\/blogs.mathworks.com\/japan-community\/2019\/11\/05\/favorite-r2019b-feature\/\">&#21069;&#22238;<\/a> &#12395;&#32154;&#12365;&#12289; <a href=\"https:\/\/jp.mathworks.com\/help\/matlab\/matlab_prog\/function-argument-validation-1.html\">Function Argument Validation<\/a> &#12395;&#12388;&#12356;&#12390;&#26360;&#12365;&#12383;&#12356;&#12392;&#24605;&#12356;&#12414;&#12377;&#12290;<\/p>\n<p>&#12372;&#23384;&#30693;&#12398;&#26041;&#12418;&#12356;&#12427;&#12363;&#12392;&#24605;&#12356;&#12414;&#12377;&#12364;&#12289;&#12467;&#12510;&#12531;&#12489;&#12454;&#12451;&#12531;&#12489;&#12454;&#12289;&#12418;&#12375;&#12367;&#12399;&#12456;&#12487;&#12451;&#12479;&#12540;&#12398;&#20013;&#12391;&#12503;&#12525;&#12464;&#12521;&#12512;&#12434; &#26360;&#12356;&#12390;&#12356;&#12427;&#26178;&#12289;&#20837;&#21147;&#12497;&#12521;&#12513;&#12540;&#12479;&#12540;&#12398; <a href=\"https:\/\/www.mathworks.com\/help\/releases\/R2019b\/matlab\/matlab_env\/check-syntax-as-you-type.html#bswj2of-1\">&#20505;&#35036;&#12434;&#34920;&#31034;&#12375;&#12383;&#12426;&#35036;&#23436;&#12375;&#12383;&#12426;&#12377;&#12427;&#27231;&#33021;<\/a> &#12364;&#12354;&#12426;&#12414;&#12377;&#12290;<\/p>\n<p>\n<img\nsrc=\"https:\/\/www.mathworks.com\/help\/matlab\/matlab_env\/auto_completion_properties.png\"><\/img>\n<\/p>\n<p>&#23455;&#12399;&#12371;&#12398;&#27231;&#33021;&#12392;&#12356;&#12358;&#12398;&#12399; MathWorks &#35069;&#21697;&#12398;&#38306;&#25968;&#12395;&#12375;&#12363;&#12394;&#12356;&#27231;&#33021;&#12391;&#12399;&#12394;&#12367;&#12289;&#30342;&#12373;&#12435;&#12364;&#20316;&#25104;&#12373;&#12428;&#12383; &#38306;&#25968;&#12395;&#12418;&#20351;&#12360;&#12414;&#12377;&#12290;&#12381;&#12428;&#12395;&#12399; <a href=\"https:\/\/www.mathworks.com\/help\/matlab\/matlab_prog\/customize-code-suggestions-and-completions.html\">functionSignatures.json<\/a> &#12392;&#12356;&#12358;&#12501;&#12449;&#12452;&#12523;&#12434;&#20316;&#25104;&#12377;&#12427;&#24517;&#35201;&#12364;&#12354;&#12426;&#12414;&#12377;&#12290;&#20363;&#12434;&#35211;&#12390;&#12415;&#12414;&#12375;&#12423;&#12358;&#12290;<\/p>\n<p>&#12414;&#12378;&#12289;&#20197;&#19979;&#12398;&#12424;&#12358;&#12394;&#38306;&#25968;&#12434;&#20316;&#12387;&#12383;&#12392;&#12375;&#12414;&#12375;&#12423;&#12358;&#12290;<\/p>\n<pre class=\"language-matlab\"><span class=\"comment\">% myFunc  &#12469;&#12531;&#12503;&#12523;&#38306;&#25968;<\/span>\r\n<span class=\"comment\">% &#12371;&#12398;&#38306;&#25968;&#12395;&#12399;&#20197;&#19979;&#12398;&#12424;&#12358;&#12394;&#21628;&#12403;&#20986;&#12375;&#27083;&#25991;&#12364;&#12354;&#12426;&#12414;&#12377;&#12290;<\/span>\r\n<span class=\"comment\">%<\/span>\r\n<span class=\"comment\">%   myFunc(in1, in2) 2&#12388;&#12398;&#20837;&#21147;&#12364;&#24517;&#38920;&#12391;&#12377;<\/span>\r\n<span class=\"comment\">%   myFunc(in1, in2, in3) &#12458;&#12503;&#12471;&#12519;&#12531;&#12391;3&#12388;&#30446;&#12398;&#20837;&#21147;&#12364;&#12354;&#12426;&#12414;&#12377;<\/span>\r\n<span class=\"comment\">%   myFunc(___, NAME, VALUE) &#12373;&#12425;&#12395;&#12458;&#12503;&#12471;&#12519;&#12531;&#12391; Name-Value &#12506;&#12450;&#12434;&#21463;&#12369;&#20184;&#12369;&#12414;&#12377;<\/span>\r\n<span class=\"comment\">%           * 'NAME1' : &#35542;&#29702;&#20516;&#65288;logical&#65289;<\/span>\r\n<span class=\"comment\">%           * 'NAME2' : 'Default', 'Choice1', &#12414;&#12383;&#12399; 'Choice2'<\/span>\r\n<span class=\"keyword\">function<\/span> [reqA,reqB,posA,NV1,NV2] = myFunc(reqA,reqB,varargin)\r\n    <span class=\"comment\">% &#26082;&#23450;&#20516;&#12391;&#21021;&#26399;&#21270;<\/span>\r\n    NV1 = true;\r\n    NV2 = <span class=\"string\">\"Default\"<\/span>;\r\n    posA = [];\r\n    <span class=\"keyword\">if<\/span> nargin &gt; 3\r\n        <span class=\"keyword\">if<\/span> rem(nargin,2)\r\n            posA = varargin{1};\r\n            V = varargin(2:end);\r\n        <span class=\"keyword\">else<\/span>\r\n            V = varargin;\r\n        <span class=\"keyword\">end<\/span>\r\n        <span class=\"keyword\">for<\/span> n = 1:2:size(V,2)\r\n            <span class=\"keyword\">switch<\/span> V{n}\r\n                <span class=\"keyword\">case<\/span> <span class=\"string\">'Name1'<\/span>\r\n                    NV1 = V{n+1};\r\n                <span class=\"keyword\">case<\/span> <span class=\"string\">'Name2'<\/span>\r\n                    NV2 = V{n+1};\r\n                <span class=\"keyword\">otherwise<\/span>\r\n                    error(<span class=\"string\">'&#12456;&#12521;&#12540;'<\/span>)\r\n            <span class=\"keyword\">end<\/span>\r\n        <span class=\"keyword\">end<\/span>\r\n    <span class=\"keyword\">end<\/span>\r\n<span class=\"keyword\">end<\/span>\r\n<\/pre>\n<p>&#12371;&#12398;&#38306;&#25968;&#12395;&#23550;&#12375;&#12390;&#20505;&#35036;&#12392;&#35036;&#23436;&#27231;&#33021;&#12434;&#36861;&#21152;&#12377;&#12427;&#12395;&#12399;&#12289;&#12371;&#12398;&#38306;&#25968;&#12364;&#23384;&#22312;&#12377;&#12427;&#12501;&#12457;&#12523;&#12480;&#12540;&#12395; &#12371;&#12398;&#38306;&#25968;&#12398;&#21628;&#12403;&#20986;&#12375;&#27083;&#25991;&#12434;&#35352;&#36848;&#12377;&#12427; <tt>functionSignatures.json<\/tt> &#12434;&#20316;&#25104;&#12375;&#12414;&#12377;&#12290;<\/p>\n<pre class=\"language-matlab\">{\r\n  <span class=\"string\">\"_schemaVersion\"<\/span>: <span class=\"string\">\"1.0.0\"<\/span>,\r\n  <span class=\"string\">\"myFunc\"<\/span>:\r\n  {\r\n     <span class=\"string\">\"inputs\"<\/span>:\r\n     [\r\n        {<span class=\"string\">\"name\"<\/span>:<span class=\"string\">\"in1\"<\/span>, <span class=\"string\">\"kind\"<\/span>:<span class=\"string\">\"required\"<\/span>, <span class=\"string\">\"type\"<\/span>:[<span class=\"string\">\"numeric\"<\/span>], <span class=\"string\">\"purpose\"<\/span>:<span class=\"string\">\"ID of item\"<\/span>},\r\n        {<span class=\"string\">\"name\"<\/span>:<span class=\"string\">\"in2\"<\/span>, <span class=\"string\">\"kind\"<\/span>:<span class=\"string\">\"required\"<\/span>, <span class=\"string\">\"type\"<\/span>:[<span class=\"string\">\"numeric\"<\/span>], <span class=\"string\">\"purpose\"<\/span>:<span class=\"string\">\"# Items\"<\/span>},\r\n        {<span class=\"string\">\"name\"<\/span>:<span class=\"string\">\"in3\"<\/span>, <span class=\"string\">\"kind\"<\/span>:<span class=\"string\">\"ordered\"<\/span>, <span class=\"string\">\"type\"<\/span>:[<span class=\"string\">\"numeric\"<\/span>], <span class=\"string\">\"purpose\"<\/span>:<span class=\"string\">\"Input Value\"<\/span>},\r\n        {<span class=\"string\">\"name\"<\/span>:<span class=\"string\">\"Name1\"<\/span>, <span class=\"string\">\"kind\"<\/span>:<span class=\"string\">\"namevalue\"<\/span>, <span class=\"string\">\"type\"<\/span>:[<span class=\"string\">\"logical\"<\/span>,<span class=\"string\">\"scalar\"<\/span>],<span class=\"string\">\"purpose\"<\/span>:<span class=\"string\">\"Option\"<\/span>},\r\n        {<span class=\"string\">\"name\"<\/span>:<span class=\"string\">\"Name2\"<\/span>, <span class=\"string\">\"kind\"<\/span>:<span class=\"string\">\"namevalue\"<\/span>, <span class=\"string\">\"type\"<\/span>:[<span class=\"string\">\"char\"<\/span>, <span class=\"string\">\"choices={'Default','Choice1','Choice2'}\"<\/span>]}\r\n     ]\r\n  }\r\n}\r\n<\/pre>\n<p>&#12377;&#12427;&#12392; <tt>myFunc<\/tt> &#12434;&#35352;&#36848;&#12377;&#12427;&#38555;&#12395;&#20197;&#19979;&#12398;&#12424;&#12358;&#12394;&#20505;&#35036;&#12364;&#34920;&#31034;&#12373;&#12428;&#12427;&#12424;&#12358;&#12395;&#12394;&#12426;&#12414;&#12377;&#12290;<\/p>\n<p>\n<img\nsrc=\"http:\/\/blogs.mathworks.com\/japan-community\/files\/2019\/11\/func_hints_old.png\"><\/img>\n<\/p>\n<p>R2019b &#12398; Function Argument Validation &#12434;&#27963;&#29992;&#12377;&#12427;&#12392;&#12289;&#12394;&#12435;&#12392;&#12371;&#12398;&#27231;&#33021;&#12364;&#12388;&#12356;&#12390;&#12367;&#12427;&#12398;&#12391;&#12377;&#12290; &#12414;&#12387;&#12383;&#12367;&#21516;&#12376;&#29992;&#36884;&#12398; <tt>myFunc2<\/tt> &#12434; Function Argument Validation &#12434;&#20351;&#12387;&#12390;&#26360;&#12367;&#12392;<\/p>\n<p><pre class=\"language-matlab\"><span class=\"keyword\">function<\/span> [reqA,reqB,posA,NV1,NV2] = myFunc2(reqA,reqB,posA,opts)<p>\r\n<span class=\"keyword\">arguments<\/span>\r\n    reqA <span style=\"color: #A45F47\">(1,1) double<\/span>\r\n    reqB <span style=\"color: #A45F47\">(1,1) double<\/span>\r\n    posA <span style=\"color: #A45F47\">double<\/span> = []\r\n    opts.Name1 <span style=\"color: #A45F47\">(1,1) logical<\/span> = true\r\n    opts.Name2 <span style=\"color: #A45F47\">char {mustBeMember(opts.Name2,[\"Default\",\"Choice1\",\"Choice2\"])}<\/span> = <span class=\"string\">\"Default\"<\/span>\r\n<span class=\"keyword\">end<\/span>\r\nNV1 = opts.Name1;\r\nNV2 = opts.Name2;<p>\r\n<span class=\"keyword\">end<\/span> <\/pre>\n<\/p>\n<p>&#12377;&#12427;&#12392; <tt>functionSignatures.json<\/tt> &#12501;&#12449;&#12452;&#12523;&#12434;&#20316;&#25104;&#12377;&#12427;&#24517;&#35201;&#12394;&#12367;&#20505;&#35036;&#12392;&#35036;&#23436;&#27231;&#33021;&#12364; &#20633;&#12360;&#12388;&#12356;&#12390;&#12365;&#12414;&#12377;&#12290;<\/p>\n<p>\n<img\nsrc=\"http:\/\/blogs.mathworks.com\/japan-community\/files\/2019\/11\/func_hints_new.png\"><\/img>\n<\/p>\n<p>&#25913;&#12417;&#12390; Function Argument Validation &#27231;&#33021;&#12395;&#12388;&#12356;&#12390;&#12414;&#12392;&#12417;&#12390;&#12415;&#12414;&#12377;&#12392;<\/p>\n<div>\n<ul>\n<li>&#38306;&#25968;&#12398;&#20837;&#21147;&#24341;&#25968;&#12395;&#21046;&#32004;&#12434;&#21152;&#12360;&#12427;&#12371;&#12392;&#12395;&#12424;&#12387;&#12390;&#12525;&#12496;&#12473;&#12488;&#24615;&#12364;&#21521;&#19978;&#12377;&#12427;<\/li>\n<li>&#20837;&#21147;&#24341;&#25968;&#12398;&#12481;&#12455;&#12483;&#12463;&#12434;&#20998;&#12363;&#12426;&#26131;&#12367;&#31777;&#28500;&#12395;&#34920;&#29694;&#12377;&#12427;&#12371;&#12392;&#12364;&#20986;&#26469;&#12427;<\/li>\n<li>&#38306;&#25968;&#12398;&#27963;&#29992;&#32773;&#12434;&#25163;&#21161;&#12369;&#12395;&#12394;&#12427;&#20837;&#21147;&#24341;&#25968;&#12398;&#20505;&#35036;&#12420;&#35036;&#23436;&#12434;&#12375;&#12390;&#12367;&#12428;&#12427;<\/li>\n<\/ul>\n<\/div>\n<p>&#12388;&#12414;&#12426;&#12289;&#38283;&#30330;&#32773;&#12539;&#27963;&#29992;&#32773;&#12398;&#20001;&#32773;&#12363;&#12425;&#12375;&#12390;&#31649;&#29702;&#12375;&#12420;&#12377;&#12356;&#12289;&#20351;&#12356;&#12420;&#12377;&#12356;&#12503;&#12525;&#12464;&#12521;&#12512;&#12395;&#12394;&#12427;&#12392;&#12356;&#12358;&#12371;&#12392;&#12391;&#12377;&#12290;<\/p>\n<p>&#26159;&#38750;&#12289;&#27963;&#29992;&#12375;&#12390;&#12415;&#12390;&#12367;&#12384;&#12373;&#12356;&#12290;&#12414;&#12383;&#12289;&#26032;&#12375;&#12356;&#27231;&#33021;&#12391;&#12399;&#12354;&#12427;&#12398;&#12391;&#12289;&#12372;&#24847;&#35211;&#12420;&#25913;&#21892;&#35201;&#26395;&#12394;&#12393;&#12364; &#12372;&#12374;&#12356;&#12414;&#12375;&#12383;&#12425; <a href=\"https:\/\/blogs.mathworks.com\/japan-community\/?p=797#respond\">&#12467;&#12513;&#12531;&#12488;<\/a> &#12362;&#39000;&#12356;&#12375;&#12414;&#12377;&#12290;<\/p>\n<p><script language=\"JavaScript\"><br \/>\n<p><a href=\"https:\/\/twitter.com\/jiro_MWJ\" class=\"twitter-follow-button\" data-size=\"large\" data-show-count=\"false\">Follow @jiro_MWJ<\/a><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\n&#12371;&#12435;&#12395;&#12385;&#12399;&#12289;&#36947;&#23478;&#12391;&#12377;&#12290;<br \/>\n&#21069;&#22238; &#12395;&#32154;&#12365;&#12289; Function Argument Validation&#8230; <a class=\"read-more\" href=\"https:\/\/blogs.mathworks.com\/japan-community\/2019\/11\/27\/function-arguments-part2\/\">read more >><\/a><\/p>\n","protected":false},"author":35,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[61],"tags":[],"_links":{"self":[{"href":"https:\/\/blogs.mathworks.com\/japan-community\/wp-json\/wp\/v2\/posts\/797"}],"collection":[{"href":"https:\/\/blogs.mathworks.com\/japan-community\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.mathworks.com\/japan-community\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/japan-community\/wp-json\/wp\/v2\/users\/35"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/japan-community\/wp-json\/wp\/v2\/comments?post=797"}],"version-history":[{"count":8,"href":"https:\/\/blogs.mathworks.com\/japan-community\/wp-json\/wp\/v2\/posts\/797\/revisions"}],"predecessor-version":[{"id":2159,"href":"https:\/\/blogs.mathworks.com\/japan-community\/wp-json\/wp\/v2\/posts\/797\/revisions\/2159"}],"wp:attachment":[{"href":"https:\/\/blogs.mathworks.com\/japan-community\/wp-json\/wp\/v2\/media?parent=797"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/japan-community\/wp-json\/wp\/v2\/categories?post=797"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/japan-community\/wp-json\/wp\/v2\/tags?post=797"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}