2019년 3월 8일 금요일

메서드 없이 속성만 포함한 클래스 정의(feat CSV 파일 로드)

//매출 클래스
public class sale
{
//점포이름
public string ShopName{ get; set; }

//상품 종류
public string ProductCategory{ get; set; }

//매출 액
public int Amount{ get; set; }

};

//ReadSales 메서드
public class Test : MonoBehaviour
{
    //매출 데이터를 읽어 들이고 Sales 객체 리스트를 반환한다.

    static List<Sale> ReadSales(string filePath)
    {
        List<Sale> sales = new List<Sale>(); // 매출 데이터를 넣을 리스트 객체를 생성한다
        string[] lines = File.ReadAllLines(filePath); // 파일을 한번에 읽어 들인다
        foreach (string line in lines)              //읽어 들인 행 개수만큼 반복한다
        {
            string[] items = line.Split(',');   
            Sale sale = new Sale                //세일객체를 생성
            {
                ShopName = items[0],
                ProductCategory = items[1],
                Amount = int.Parse(items[2])
            };

            sales.Add(sale);              //Sale객체를 리스트에 추가한다.
        }
        return sales;
    }
}


//점포별 매출 계산
public class SalesCounter
{
    private List<Sale> _sales;

    //생성자
    public SalesCounter(List<Sale> sales)
    {
        _sales = sales;
    }

    //dictionary에 집계를 저장한다
    public Dictionary<string, int> GetPerStoreSales()
    {
        Dictionary<string, int> dict = new Dictionary<string, int>();

        foreach (Sale sale in _sales)
        {
            if (dict.ContainsKey(sale.ShopName))
            {
                dict[sale.ShopName] += sale.Amount;
            }
            else
                dict[sale.ShopName] = sale.Amount;
        }

        return dict;
    }
}


//main

private void Start()
    {
        SalesCounter sales = new SalesCounter(ReadSales("sales.csv"));
        Dictionary<string, int> amountPerStore = sales.GetPerStoreSales();
       
        foreach(KeyValuePair<string,int> obj in amountPerStore)
        {
            Debug.Log(" key:" +obj.Key + "value:" + obj.Value);
        }
    }

댓글 없음:

댓글 쓰기

git rejected error(feat. cherry-pick)

 문제 아무 생각 없이 pull을 받지않고 로컬에서 작업! 커밋, 푸시 진행을 해버렷다. push에선 remote와 다르니 당연히 pull을 진행해라고 하지만 로컬에서 작업한 내용을 백업하지 않고 진행하기에는 부담스럽다(로컬작업 유실 가능성) 해결하려...