示例#1
0
        public BinaryResponse ModifyBinary(char binary)
        {
            BinaryOperator binaryOperator = Operators.GetBinary(binary);

            if (Number != null)
            {
                throw new Exception("ModifyBinary時Number不能有值");
            }
            expController.Modify(binaryOperator);
            return(new BinaryResponse(new Updates(removeLength: 1, updateString: binary.ToString())));
        }
示例#2
0
        /// <summary>
        /// 輸入用戶id。body可能會有數字(int)、運算符(char)、左括號(bool)、右括號(bool)、單元運算列(List(char))
        /// </summary>
        /// <param name="userId">用戶id</param>
        /// <returns>Response</returns>
        public IHttpActionResult PostInputOperator(int userId)
        {
            //讀取body
            OperatorExpression   expression    = Request.Content.ReadAsAsync <OperatorExpression>().Result;
            ExpressionController expController = Users.GetExpressionController(userId);

            char BinaryName = expression.BinaryOperator.Value;

            //引入字典
            //BinaryOperator binaryOperator = Operators.BinaryDic[BinaryName];
            BinaryOperator       binaryOperator = Operators.GetBinary(BinaryName);
            List <UnaryOperator> unaryList      = (expression.UnaryList == null) ? new List <UnaryOperator>()
                                                                           : expression.UnaryList.Select(x => Operators.GetUnary(x)).ToList();

            decimal number = expression.Number ?? 0;

            //處理四種case
            switch (expression.Type())
            {
            case ExpType.OP:
                expController.Modify(binaryOperator);
                break;

            case ExpType.NUM_OP:
                expController.Add(number, unaryList);
                expController.Add(binaryOperator);
                break;

            case ExpType.LB_NUM_OP:
                expController.LeftBracket();
                expController.Add(number, unaryList);
                expController.Add(binaryOperator);
                break;

            case ExpType.NUM_RB_OP:
                expController.Add(number, unaryList);
                expController.RightBracket();
                expController.Add(binaryOperator);
                break;

            default:
                throw new Exception("運算表達格式錯誤");
            }

            return(Ok(new { msg = "success" }));
        }